04-UE蓝图节点基本结构讲解

UE蓝图节点基本结构”的内容可总结为以下4个核心部分:


1. 节点的3大基本组件

  • 标题(Header)
    显示节点名称,颜色代表类型(如事件→红色,函数→蓝色,变量→绿色)。
  • 输入/输出引脚(Pins)
    • 左侧:输入引脚(触发逻辑或接收数据)。
    • 右侧:输出引脚(执行后续逻辑或返回数据)。
    • 数据类型:引脚颜色区分(如红色=布尔,蓝色=整数,粉色=字符串)。
  • 折叠按钮(Collapse Arrow)
    可展开/隐藏节点的详细参数(如函数的输入值)。

2. 节点的4种核心类型

类型 图标/颜色 作用 示例
事件节点 红色标题 响应游戏事件(如按键、碰撞) BeginPlayTick
函数节点 蓝色标题 执行预定义功能 Print String
变量节点 绿色标题 存储/读取数据 布尔值isAlive
流程控制节点 蓝色(菱形图标) 控制逻辑分支(如条件判断) BranchForLoop

3. 引脚的连接规则

  • 执行引脚(白色三角形):必须按顺序连接(如事件→函数→后续逻辑)。
  • 数据引脚(圆形):类型必须匹配(如整数引脚不能连接布尔值)。
  • 多引脚兼容性:部分引脚可自动转换(如整数→浮点数)。

4. 节点的编辑技巧

  • 右键搜索:输入关键词快速添加节点(如输入“print”找到Print String)。
  • 拖动连接:从引脚拖拽生成兼容节点(如从布尔引脚拖出自动生成Branch)。
  • 注释框(Comment):选中节点按C键添加注释,分组整理逻辑。

一句话总结

蓝图节点=事件触发→数据输入→函数处理→结果输出,通过颜色/形状快速识别类型,严格遵循引脚类型匹配规则。

虚幻引擎的蓝图(Blueprint)系统通过节点(Node)构建逻辑,每个节点代表一个函数、事件、变量或流程控制单元。以下从节点类型、引脚系统、创建方式、执行流程、自定义节点五个方面进行详细讲解。


1. 节点类型与功能

类型 作用 常见示例
事件节点 由引擎自动触发的起点(如游戏开始、碰撞触发) Event BeginPlayOnComponentBeginOverlap
函数节点 执行特定操作(如移动角色、播放动画) Launch CharacterPrint String
变量节点 存储或读取数据(如整数、布尔值、对象引用) Get Player PawnSet Max Walk Speed
流程控制节点 控制逻辑分支(如条件判断、循环) BranchForEachLoopDelay
异步节点 执行耗时操作(如延迟、网络请求)且不会阻塞主线程 DelayAsync Load Asset

2. 引脚系统(Pins)

  • 执行引脚(Exec):白色箭头,表示执行顺序(从左到右)。
  • 数据引脚:彩色圆形,传输变量(如浮点数、向量)。
    • 输入引脚:节点左侧(如BranchCondition)。
    • 输出引脚:节点右侧(如Get Player Pawn返回的Pawn对象)。
  • 特殊引脚
    • 委托引脚:绑定事件(如OnCompleted)。
    • 枚举扩展引脚:将枚举值拆分为多个执行引脚(如SetVisualFidelity)。

3. 创建与连接节点

创建方式
  1. 右键菜单:在图表空白处右键,搜索节点名称(如Print String)。
  2. 拖动引脚:从现有节点的输出引脚拖动,自动生成相关节点(如从Character引用拖动生成Set Max Walk Speed)。
  3. 快捷键:按B键快速创建Branch节点,按O键创建Delay节点。
连接规则
  • 执行流:必须连接白色执行引脚,否则逻辑中断。
  • 数据类型匹配:颜色相同的引脚才能连接(如红色浮点输出只能接红色浮点输入)。
  • 上下文敏感:右键菜单默认开启Context Sensitive,仅显示与当前选中节点相关的选项。

4. 节点执行流程(运行时)

  1. 编译:蓝图被编译为字节码(存储在.uasset文件中)。
  2. 虚拟机执行:运行时通过ProcessEventProcessLocalScriptFunction逐条执行字节码。
  3. 异步任务:异步节点的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)。

实战示例:弹跳平台逻辑

  1. 事件节点OnComponentBeginOverlap(当玩家进入触发器)。
  2. 条件判断Branch节点检查重叠的Actor是否为玩家。
  3. 执行动作Launch Character节点给玩家施加向上的速度。

(PS:该系列文章为笔者学习UE过程中所遇问题的AI解答,仅作参考)

你可能感兴趣的:(虚幻引擎,虚幻引擎,蓝图节点)