虚幻引擎 MultiGate 节点

一、MultiGate 节点介绍

MultiGate(多门)节点是虚幻引擎蓝图中的一个流程控制节点,用于根据调用顺序或条件在多个输出引脚中选择一个执行。简单来说,它是一个可以“记录并且按顺序输出”的节点,每次输入执行流时,会激活下一个输出引脚

MultiGate 节点拥有任意数量的输出,每次进入节点时它都会递增执行索引,从 Out 0 开始,直到最后一个执行索引,除非另有其他指定。在蓝图中输入快捷键 M + 鼠标左键可以快速创建 MultiGate 节点

引脚功能说明

引脚名称 类型 方向 功能描述
In 执行 输入 主触发入口,每次触发时激活当前输出引脚
Reset 执行 输入 重置内部索引,使其恢复到初始状态
Is Random 布尔值 输入 勾选后,随机选择输出引脚
Loop 布尔值 输入 勾选后,完成后自动从头循环
Start Index 整型 输入 设置首次触发的起始引脚索引
Out 0 / Out 1 / … 执行 输出 多个输出引脚,可点击 Add pin 增加

与 Gate 节点的区别

Gate 节点只有一个执行出口 Exit,而 MultiGate 则拥有多个执行出口,可以在多个输出路径之间进行选择。Gate 更像是“开关”(控制是否允许通过),MultiGate 更像是“分配器”(选择走哪条路)。

二、核心配置参数详解

1. Loop 循环

Loop 是一个布尔值输入,控制是否循环执行:

  • Loop = False(默认):按顺序依次输出,执行完最后一个输出引脚后,MultiGate 会“关闭”,不再响应后续输入

  • Loop = True:执行完最后一个引脚后,会从头开始循环,继续依次输出

2. Is Random 随机

Is Random 是一个布尔值输入,控制输出的顺序:

  • Is Random = False(默认):按顺序依次输出(Out 0 → Out 1 → Out 2 → …)。

  • Is Random = True随机选择输出引脚,每次触发时会随机选择一个未被触发过的引脚输出,直到所有引脚都被随机输出过一次为止

配合 Loop 使用时的区别:

  • 只勾选 Is Random(Loop 不勾选):随机执行各个引脚,执行过的不再执行,全部执行过后节点停止响应

  • Is Random 和 Loop 都勾选:随机执行各个引脚,执行完一轮(所有引脚都被随机触发过一次)后不关闭,继续随机执行下一轮

3. Start Index 起始索引

Start Index 是一个整型输入,用于设置每轮执行时第一个输出的是哪一个引脚:

  • Start Index = -1(默认):第一次触发时,随机或按顺序从第一个引脚开始执行

  • Start Index = 0 或 1 或 2…:设置该轮执行的起始引脚索引(从 0 开始计数)

4. Reset 重置

Reset 引脚用于重置 MultiGate 的内部索引。执行 Reset 引脚后,MultiGate 会恢复到初始状态,可以重新开始输出。无论是执行到一半还是已经执行完毕,Reset 都能让节点“重新来一遍”。

三、实战案例一:顺序执行输出(循环播放三种颜色灯光)

本案例演示如何使用 MultiGate 节点实现顺序循环切换三种灯光颜色的效果。

操作步骤

步骤 1:创建项目

  1. 打开虚幻引擎 5,创建一个新的蓝图项目(任意模板均可)。

  2. 在内容浏览器中右键 → 创建基础资产 → 蓝图类,选择 Actor 作为父类,命名为 BP_LightCycle

  3. 双击打开 BP_LightCycle 进入蓝图编辑器。

步骤 2:添加组件

  1. 在组件面板点击 添加组件 → 添加 Point Light(点光源) 组件。

  2. 选中点光源,在细节面板设置:

    • Intensity(强度):1000

    • Light Color(颜色):白色

  3. 添加一个 Static Mesh(静态网格体) 组件(例如 Cube),作为被照亮的物体。

步骤 3:创建输入事件

  1. 在事件图表中,右键 → 输入 → 键盘事件 → 选择 Space Bar(空格键)

  2. 从空格键按下事件引脚拖出,添加一个 MultiGate 节点(快捷键 M + 左键)。

步骤 4:配置 MultiGate 节点

  1. 点击 MultiGate 节点,在细节面板中:

    • Loop 复选框:✅ 勾选(实现循环切换)

    • Is Random 复选框:❌ 不勾选(保持顺序输出)

    • Start Index 保持默认 -1(从第一个引脚开始)

  2. 默认情况下 MultiGate 有 2 个输出引脚(Out 0 和 Out 1)。点击节点底部的 Add pin 按钮,再添加一个输出引脚(Out 2)。

步骤 5:连接输出逻辑

  1. 从 Out 0 拖出,添加一个 Set Light Color 节点(针对 Point Light 组件):

    • 将输出颜色设置为 红色

  2. 从 Out 1 拖出,添加一个 Set Light Color 节点:

    • 将输出颜色设置为 绿色

  3. 从 Out 2 拖出,添加一个 Set Light Color 节点:

    • 将输出颜色设置为 蓝色

完成后,按下空格键,灯光颜色会在红 → 绿 → 蓝 → 红 → 绿 → 蓝……之间顺序循环切换。

补充说明:如果需要让切换之间有明显间隔(让肉眼看到颜色变化),可以在每个 Set Light Color 节点之前或之后添加 Delay 节点设置延迟时间(例如 1 秒)。

四、实战案例二:随机执行输出(随机触发多个特效)

本案例演示如何使用 MultiGate 节点实现随机触发不同的游戏效果,每次触发时随机选择一个效果执行,适用于随机掉落、随机特效、随机对话等游戏机制。

操作步骤

步骤 1:创建项目

  1. 创建一个新的第三人称蓝图项目。

  2. 在内容浏览器中创建蓝图类 → 选择 Actor,命名为 BP_RandomEffect

  3. 双击打开 BP_RandomEffect

步骤 2:创建触发事件

  1. 在事件图表中,添加一个 ActorBeginOverlap 事件(当玩家走进触发器时触发)。

  2. 从 ActorBeginOverlap 引脚拖出,添加一个 MultiGate 节点。

步骤 3:配置 MultiGate 随机模式
在 MultiGate 节点的细节面板中:

  • Loop 复选框:✅ 勾选(触发所有效果后继续随机)

  • Is Random 复选框:✅ 勾选(随机选择输出引脚)

  • 点击 Add pin 添加多个输出引脚(例如 3 个或 4 个)

步骤 4:添加随机效果
分别从 Out 0、Out 1、Out 2 等引脚连接不同的效果:

  • Out 0 → 添加 Spawn Emitter at Location(生成粒子特效)

  • Out 1 → 添加 Play Sound 2D(播放音效)

  • Out 2 → 添加 Print String(打印文字:“稀有掉落!”)

这样每次玩家走进触发器区域,都会随机触发上述三种效果中的一种。

补充说明:如果不需要循环(即每个效果只触发一次,全部触发过后就不再响应),只需勾选 Is Random,不勾选 Loop 即可

五、实战案例三:按键控制立方体显隐(入门练习)

这是一个非常适合初学者的入门案例,展示 MultiGate 最基础的应用。

操作步骤

步骤 1:创建项目与组件

  1. 创建一个第三人称蓝图项目。

  2. 在关卡中放置一个 Cube(立方体)

步骤 2:创建蓝图类

  1. 在内容浏览器中右键 → 蓝图类 → Actor → 命名为 BP_CubeVisible

  2. 将关卡中的立方体绑定到此蓝图中(或将立方体蓝图化)。

  3. 在组件面板中添加 Static Mesh 组件(设置为立方体)。

步骤 3:配置输入事件

  1. 在 BP_CubeVisible 的事件图表中,添加 键盘事件 H

  2. 添加一个 MultiGate 节点(M + 左键)。

  3. 在 MultiGate 节点的细节面板中,勾选 Loop(使立方体可在显示和隐藏之间循环切换)。

步骤 4:连接隐藏/显示逻辑

  1. 从 Out 0 拖出,添加 Set Visibility 节点:

    • 目标设置为立方体组件

    • Visible 设置为 True(显示立方体)

  2. 从 Out 1 拖出,添加 Set Visibility 节点:

    • Visible 设置为 False(隐藏立方体)

完成后,每次按下 H 键,立方体就会在显示和隐藏状态之间交替切换

📌 特别提醒——Actor 类中的输入注意事项
当在继承自 Actor 的蓝图类中使用按键输入时,默认情况下按键功能无响应。这是因为 Actor 类的输入未默认使能,需要手动添加节点激活玩家控制器输入。解决方法:在 Actor 类的事件图表中添加使能玩家控制器输入的相关节点,编译运行后按键功能即可正常激活

六、实战案例四:多摄像机视角切换

MultiGate 在游戏中常用于切换不同的摄像机视角(车内视角、第三人称、俯视视角等)。

操作步骤

  1. 在关卡蓝图中添加按键事件(例如按下 P 键)。

  2. 添加 MultiGate 节点,点击 Add pin 添加所需数量的输出引脚(每个引脚对应一个摄像机)。

  3. 将每个输出引脚连接到 Set View Target with Blend 节点,目标分别设置为不同的摄像机 Actor。

每次按 P 键,视角会切换到下一个摄像机

如果需要循环切换,勾选 Loop 复选框;如果需要随机切换,勾选 Is Random 复选框。

七、常见问题与注意事项

❌ 问题 1:在函数(Function)中使用 MultiGate 导致不执行

原因:函数(Function)中不能包含与时间相关的节点,也不能包含流程控制节点(如 MultiGate)

解决方案

  • 将包含 MultiGate 的逻辑改为在宏(Macro) 或事件图表中实现

  • 也可以将相关节点选中,右键折叠到宏中

❌ 问题 2:如何在执行过程中重置 MultiGate?

直接连接一个执行线到 MultiGate 的 Reset 引脚即可,重置后索引恢复到初始值

典型用法

text
按键事件 → 分支(重置条件) → Reset(重置MultiGate) → 同时触发MultiGate的In

使用 Sequence 节点可以同时触发 Reset 和 In,实现“重置后立即开始新的一轮”。

❌ 问题 3:在 Actor 类中使用按键输入不生效?

在 Actor 类的蓝图事件图表中添加 Enable Input 节点:

text
Event BeginPlay → Enable Input (目标: Get Player Controller) → 然后连接按键输入事件

⚠️ 注意事项

  1. 执行顺序感知不明显:多个 Out 引脚如果之间没有 Delay 节点,输出后会瞬间执行完毕,看起来像是“同时执行”。需要顺序感时,在不同 Out 之间添加 Delay 节点

  2. Start Index = -1 的含义:-1 表示不控制起始索引,按照正常逻辑开始。如果设置为具体的数值(如 0、1、2),则该轮执行时会从指定索引的引脚开始输出

  3. Is Random 的随机逻辑:随机模式下,MultiGate 会记录哪些引脚已经被触发过,确保所有引脚都被随机触发过一次后才会开启下一轮(配合 Loop 使用时)

八、MultiGate 与其他流程控制节点的对比

节点 功能 典型场景
Sequence 按顺序依次执行所有输出(每次都执行全部) 需要同时触发多个逻辑时
MultiGate 每次触发只执行一个输出,自动轮换 循环切换多个状态
Flip Flop 在 A 和 B 之间来回切换 开关灯、开/关门
Branch 根据布尔条件选择两个路径之一 条件判断
Gate 控制是否允许执行流通过 临时禁用/启用功能

MultiGate 最显著的特点是:单次触发、单次输出、自动轮换。这使得它在实现“点击按钮在不同状态间切换”的需求时表现非常出色。

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容