04-UE蓝图节点基本结构讲解
“UE蓝图节点基本结构”的内容可总结为以下4个核心部分:
1. 节点的3大基本组件
- 标题(Header)
显示节点名称,颜色代表类型(如事件→红色,函数→蓝色,变量→绿色)。 - 输入/输出引脚(Pins)
- 左侧:输入引脚(触发逻辑或接收数据)。
- 右侧:输出引脚(执行后续逻辑或返回数据)。
- 数据类型:引脚颜色区分(如红色=布尔,蓝色=整数,粉色=字符串)。
- 折叠按钮(Collapse Arrow)
可展开/隐藏节点的详细参数(如函数的输入值)。
2. 节点的4种核心类型
类型 | 图标/颜色 | 作用 | 示例 |
---|---|---|---|
事件节点 | 红色标题 | 响应游戏事件(如按键、碰撞) | BeginPlay 、Tick |
函数节点 | 蓝色标题 | 执行预定义功能 | Print String |
变量节点 | 绿色标题 | 存储/读取数据 | 布尔值isAlive |
流程控制节点 | 蓝色(菱形图标) | 控制逻辑分支(如条件判断) | Branch 、ForLoop |
3. 引脚的连接规则
- 执行引脚(白色三角形):必须按顺序连接(如事件→函数→后续逻辑)。
- 数据引脚(圆形):类型必须匹配(如整数引脚不能连接布尔值)。
- 多引脚兼容性:部分引脚可自动转换(如整数→浮点数)。
4. 节点的编辑技巧
- 右键搜索:输入关键词快速添加节点(如输入“print”找到
Print String
)。 - 拖动连接:从引脚拖拽生成兼容节点(如从布尔引脚拖出自动生成
Branch
)。 - 注释框(Comment):选中节点按
C
键添加注释,分组整理逻辑。
一句话总结
蓝图节点=事件触发→数据输入→函数处理→结果输出,通过颜色/形状快速识别类型,严格遵循引脚类型匹配规则。
虚幻引擎的蓝图(Blueprint)系统通过节点(Node)构建逻辑,每个节点代表一个函数、事件、变量或流程控制单元。以下从节点类型、引脚系统、创建方式、执行流程、自定义节点五个方面进行详细讲解。
1. 节点类型与功能
类型 | 作用 | 常见示例 |
---|---|---|
事件节点 | 由引擎自动触发的起点(如游戏开始、碰撞触发) | Event BeginPlay 、OnComponentBeginOverlap |
函数节点 | 执行特定操作(如移动角色、播放动画) | Launch Character 、Print String |
变量节点 | 存储或读取数据(如整数、布尔值、对象引用) | Get Player Pawn 、Set Max Walk Speed |
流程控制节点 | 控制逻辑分支(如条件判断、循环) | Branch 、ForEachLoop 、Delay |
异步节点 | 执行耗时操作(如延迟、网络请求)且不会阻塞主线程 | Delay 、Async Load Asset |
2. 引脚系统(Pins)
- 执行引脚(Exec):白色箭头,表示执行顺序(从左到右)。
- 数据引脚:彩色圆形,传输变量(如浮点数、向量)。
- 输入引脚:节点左侧(如
Branch
的Condition
)。 - 输出引脚:节点右侧(如
Get Player Pawn
返回的Pawn
对象)。
- 输入引脚:节点左侧(如
- 特殊引脚:
- 委托引脚:绑定事件(如
OnCompleted
)。 - 枚举扩展引脚:将枚举值拆分为多个执行引脚(如
SetVisualFidelity
)。
- 委托引脚:绑定事件(如
3. 创建与连接节点
创建方式
- 右键菜单:在图表空白处右键,搜索节点名称(如
Print String
)。 - 拖动引脚:从现有节点的输出引脚拖动,自动生成相关节点(如从
Character
引用拖动生成Set Max Walk Speed
)。 - 快捷键:按
B
键快速创建Branch
节点,按O
键创建Delay
节点。
连接规则
- 执行流:必须连接白色执行引脚,否则逻辑中断。
- 数据类型匹配:颜色相同的引脚才能连接(如红色浮点输出只能接红色浮点输入)。
- 上下文敏感:右键菜单默认开启
Context Sensitive
,仅显示与当前选中节点相关的选项。
4. 节点执行流程(运行时)
- 编译:蓝图被编译为字节码(存储在
.uasset
文件中)。 - 虚拟机执行:运行时通过
ProcessEvent
和ProcessLocalScriptFunction
逐条执行字节码。 - 异步任务:异步节点的
Activate
函数在后台线程执行,完成后触发委托回调。
示例:按下键盘时,InputAction Jump
事件节点触发,执行Launch Character
函数使角色跳跃。
5. 自定义节点(高级)
同步节点
- 继承
UBlueprintFunctionLibrary
,用BlueprintCallable
标记静态函数:
参数自动转为输入引脚,返回值转为输出引脚。UFUNCTION(BlueprintCallable, meta=(DisplayName="My Custom Node")) static float MyFunction(float Input);
异步节点
- 继承
UBlueprintAsyncActionBase
,实现Activate
函数:
需绑定委托以通知完成事件。UCLASS() class UMyAsyncNode : public UBlueprintAsyncActionBase {UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly=true))static UMyAsyncNode* MyAsyncTask();virtual void Activate() override; };
高级控制
- 通过
UK2Node_BaseAsyncTask
自定义节点颜色、提示、引脚布局(如UK2Node_PlayMontage
)。
实战示例:弹跳平台逻辑
- 事件节点:
OnComponentBeginOverlap
(当玩家进入触发器)。 - 条件判断:
Branch
节点检查重叠的Actor是否为玩家。 - 执行动作:
Launch Character
节点给玩家施加向上的速度。
(PS:该系列文章为笔者学习UE过程中所遇问题的AI解答,仅作参考)