一、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:创建项目
-
打开虚幻引擎 5,创建一个新的蓝图项目(任意模板均可)。
-
在内容浏览器中右键 → 创建基础资产 → 蓝图类,选择 Actor 作为父类,命名为
BP_LightCycle。 -
双击打开
BP_LightCycle进入蓝图编辑器。
步骤 2:添加组件
-
在组件面板点击 添加组件 → 添加 Point Light(点光源) 组件。
-
选中点光源,在细节面板设置:
-
Intensity(强度):1000
-
Light Color(颜色):白色
-
-
添加一个 Static Mesh(静态网格体) 组件(例如 Cube),作为被照亮的物体。
步骤 3:创建输入事件
-
在事件图表中,右键 → 输入 → 键盘事件 → 选择 Space Bar(空格键)。
-
从空格键按下事件引脚拖出,添加一个 MultiGate 节点(快捷键 M + 左键)。
步骤 4:配置 MultiGate 节点
-
点击 MultiGate 节点,在细节面板中:
-
Loop 复选框:✅ 勾选(实现循环切换)
-
Is Random 复选框:❌ 不勾选(保持顺序输出)
-
Start Index 保持默认 -1(从第一个引脚开始)
-
-
默认情况下 MultiGate 有 2 个输出引脚(Out 0 和 Out 1)。点击节点底部的 Add pin 按钮,再添加一个输出引脚(Out 2)。
步骤 5:连接输出逻辑
-
从 Out 0 拖出,添加一个 Set Light Color 节点(针对 Point Light 组件):
-
将输出颜色设置为 红色
-
-
从 Out 1 拖出,添加一个 Set Light Color 节点:
-
将输出颜色设置为 绿色
-
-
从 Out 2 拖出,添加一个 Set Light Color 节点:
-
将输出颜色设置为 蓝色
-
完成后,按下空格键,灯光颜色会在红 → 绿 → 蓝 → 红 → 绿 → 蓝……之间顺序循环切换。
补充说明:如果需要让切换之间有明显间隔(让肉眼看到颜色变化),可以在每个 Set Light Color 节点之前或之后添加 Delay 节点设置延迟时间(例如 1 秒)。
四、实战案例二:随机执行输出(随机触发多个特效)
本案例演示如何使用 MultiGate 节点实现随机触发不同的游戏效果,每次触发时随机选择一个效果执行,适用于随机掉落、随机特效、随机对话等游戏机制。
操作步骤
步骤 1:创建项目
-
创建一个新的第三人称蓝图项目。
-
在内容浏览器中创建蓝图类 → 选择 Actor,命名为
BP_RandomEffect。 -
双击打开
BP_RandomEffect。
步骤 2:创建触发事件
-
在事件图表中,添加一个 ActorBeginOverlap 事件(当玩家走进触发器时触发)。
-
从 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:创建项目与组件
-
创建一个第三人称蓝图项目。
-
在关卡中放置一个 Cube(立方体)。
步骤 2:创建蓝图类
-
在内容浏览器中右键 → 蓝图类 → Actor → 命名为
BP_CubeVisible。 -
将关卡中的立方体绑定到此蓝图中(或将立方体蓝图化)。
-
在组件面板中添加 Static Mesh 组件(设置为立方体)。
步骤 3:配置输入事件
-
在
BP_CubeVisible的事件图表中,添加 键盘事件 H。 -
添加一个 MultiGate 节点(M + 左键)。
-
在 MultiGate 节点的细节面板中,勾选 Loop(使立方体可在显示和隐藏之间循环切换)。
步骤 4:连接隐藏/显示逻辑
-
从 Out 0 拖出,添加 Set Visibility 节点:
-
目标设置为立方体组件
-
Visible 设置为 True(显示立方体)
-
-
从 Out 1 拖出,添加 Set Visibility 节点:
-
Visible 设置为 False(隐藏立方体)
-
完成后,每次按下 H 键,立方体就会在显示和隐藏状态之间交替切换。
📌 特别提醒——Actor 类中的输入注意事项:
当在继承自 Actor 的蓝图类中使用按键输入时,默认情况下按键功能无响应。这是因为 Actor 类的输入未默认使能,需要手动添加节点激活玩家控制器输入。解决方法:在 Actor 类的事件图表中添加使能玩家控制器输入的相关节点,编译运行后按键功能即可正常激活。
六、实战案例四:多摄像机视角切换
MultiGate 在游戏中常用于切换不同的摄像机视角(车内视角、第三人称、俯视视角等)。
操作步骤
-
在关卡蓝图中添加按键事件(例如按下 P 键)。
-
添加 MultiGate 节点,点击 Add pin 添加所需数量的输出引脚(每个引脚对应一个摄像机)。
-
将每个输出引脚连接到 Set View Target with Blend 节点,目标分别设置为不同的摄像机 Actor。
每次按 P 键,视角会切换到下一个摄像机。
如果需要循环切换,勾选 Loop 复选框;如果需要随机切换,勾选 Is Random 复选框。
七、常见问题与注意事项
❌ 问题 1:在函数(Function)中使用 MultiGate 导致不执行
原因:函数(Function)中不能包含与时间相关的节点,也不能包含流程控制节点(如 MultiGate)。
解决方案:
-
将包含 MultiGate 的逻辑改为在宏(Macro) 或事件图表中实现
-
也可以将相关节点选中,右键折叠到宏中
❌ 问题 2:如何在执行过程中重置 MultiGate?
直接连接一个执行线到 MultiGate 的 Reset 引脚即可,重置后索引恢复到初始值。
典型用法:
按键事件 → 分支(重置条件) → Reset(重置MultiGate) → 同时触发MultiGate的In
使用 Sequence 节点可以同时触发 Reset 和 In,实现“重置后立即开始新的一轮”。
❌ 问题 3:在 Actor 类中使用按键输入不生效?
在 Actor 类的蓝图事件图表中添加 Enable Input 节点:
Event BeginPlay → Enable Input (目标: Get Player Controller) → 然后连接按键输入事件
⚠️ 注意事项
-
执行顺序感知不明显:多个 Out 引脚如果之间没有 Delay 节点,输出后会瞬间执行完毕,看起来像是“同时执行”。需要顺序感时,在不同 Out 之间添加 Delay 节点。
-
Start Index = -1 的含义:-1 表示不控制起始索引,按照正常逻辑开始。如果设置为具体的数值(如 0、1、2),则该轮执行时会从指定索引的引脚开始输出。
-
Is Random 的随机逻辑:随机模式下,MultiGate 会记录哪些引脚已经被触发过,确保所有引脚都被随机触发过一次后才会开启下一轮(配合 Loop 使用时)。
八、MultiGate 与其他流程控制节点的对比
| 节点 | 功能 | 典型场景 |
|---|---|---|
| Sequence | 按顺序依次执行所有输出(每次都执行全部) | 需要同时触发多个逻辑时 |
| MultiGate | 每次触发只执行一个输出,自动轮换 | 循环切换多个状态 |
| Flip Flop | 在 A 和 B 之间来回切换 | 开关灯、开/关门 |
| Branch | 根据布尔条件选择两个路径之一 | 条件判断 |
| Gate | 控制是否允许执行流通过 | 临时禁用/启用功能 |
MultiGate 最显著的特点是:单次触发、单次输出、自动轮换。这使得它在实现“点击按钮在不同状态间切换”的需求时表现非常出色。
感谢您的来访,获取更多精彩文章请收藏本站。







暂无评论内容