返回 导航

UE5

hangge.com

UE5 - 流程控制节点功能介绍与使用详解1(Sequence、Branch、Switch、Gate、FlipFlop)

作者:hangge | 2025-08-16 09:09
    在虚幻引擎 5 的蓝图可视化脚本系统中,流程控制节点是构建复杂逻辑的基石。它们决定了代码执行的顺序、条件和重复性,相当于传统编程语言中的 if/elseswitchfor/while 循环等控制结构。掌握这些节点对于编写高效、可读且功能强大的蓝图至关重要。下面我将通过样例深入解析 UE5 中最常用和关键的流程控制节点。

一、Sequence(序列)

1,功能说明

按顺序执行多个输出路径。当你有一段逻辑需要分成几个互不依赖但需按特定顺序执行的步骤时使用。

2,引脚说明

(1)输入
  • In (执行入口)
(2)输出
  • Then 0, Then 1, Then 2, ... (默认 2 个,可点击 "添加引脚" 增加更多输出)

3,应用场景

  • 角色复活流程:1) 播放复活动画 (Then 0) -> 2) 重置生命值和状态 (Then 1) -> 3) 传送到重生点 (Then 2)。
  • 开门动画:1) 播放开门声音 (Then 0) -> 2) 播放门移动动画 (Then 1) -> 3) 设置碰撞为关闭 (Then 2)。
  • 分步初始化:1) 加载配置 (Then 0) -> 2) 初始化 UI (Then 1) -> 3) 生成初始敌人 (Then 2)。

4,使用样例

下面运行后,页面依次打印输出:Step1Step2Step3

二、Branch(分支)

1,功能说明

根据一个布尔值 (Boolean) 条件 (True False) 决定执行流走向两条路径中的哪一条。这是最基础的条件语句。

2,引脚说明

(1)输入:
  • In (执行入口)
  • Condition (布尔值输入,决定分支方向)
(2)输出:
  • True (当 ConditionTrue 时执行)
  • False (当 ConditionFalse 时执行)

3,应用场景

  • 检查玩家是否有钥匙开门。
  • 判断敌人是否在视野内来决定攻击或巡逻。
  • 根据玩家生命值是否低于阈值触发濒死状态。
  • 检查某个开关是否已开启。

4,使用样例

(1)在“事件图表”面板的空白处单击鼠标右键并输入“分支”,生成一个“分支”节点
  • 或者按住 B 键,并单击空白处生成。

(2)下面样例根据 Condition1 这个布尔类型的变量值是 True 还是 False,来决定输出不同的信息。

三、Switch(分支)

1,功能说明

(1)Switch 节点根据一个值(整型、枚举、Name、字符串等)在多个执行路径之间进行选择,相当于传统编程语言中的 switch/case 语句。
(2)Switch 节点能够避免大量嵌套的 Branch 节点,使多路分支逻辑更加清晰与易于维护。

2,引脚说明

(1)输入:
  • Exec:执行入口,引发 Switch 判断。
  • Selection:要比较的值(根据具体使用的 Switch 类型,可能是 IntEnumNameString)。
(2)输出:
  • Case 0, Case 1, …:各个分支路径,对应 Selection 值相等时的执行输出。默认两个 Case,可点击 “添加引脚” 增加更多。
  • Default:当 Selection 与所有 Case 都不匹配时执行的备用路径。
(3)常用类型:
  • Switch on IntSelection 为整型。
  • Switch on EnumSelection 为枚举类型。枚举可直接在下拉菜单中选择具体枚举。
  • Switch on Name / StringSelectionNameString,适合用键名称、标签等字符串进行分支。

3,应用场景

  • 多状态处理:根据角色状态(IdleRunAttackDie)执行不同动画或逻辑。
  • 武器选择:根据当前武器类型(PistolRifleRocket)调用不同射击函数或生成不同子弹。
  • 对话分支:根据对话节点索引或关键词跳转到不同的对话分支。
  • 枚举驱动逻辑:利用自定义枚举控制道具效果、AI 行为或界面选项等。

4,使用样例

(1)下面是一个 Switch on Int 节点使用样例:

(2)下面是一个 Switch on String 节点使用样例:

(3)下面是 Switch on Enum 节点的使用样例,它使用枚举的值作为可用的输出节点。

四、Gate(门)

1,功能说明

控制执行流是否可以通过。就像一个可以打开或关闭的门。需要外部信号 (Open/Close/Toggle) 来控制其状态。

2,引脚说明

(1)输入:
  • Enter (执行入口,尝试通过门)
  • Open (输入执行,打开门 - 允许 Enter 通过)
  • Close (输入执行,关上门 - 阻止 Enter 通过)
  • Toggle (输入执行,切换门的开/关状态)
(2)输出:
  • Exit (当门为 Open 状态且 Enter 被触发时,执行流从这里通过)
(3)参数:
  • Start Closed (布尔):确定门初始状态是关闭 (True) 还是打开 (False)。默认为 True(关闭)。

3,应用场景

  • 冷却系统: 技能使用后关闭门,启动一个延迟,延迟结束后再打开门,允许再次使用技能 (Enter 连技能逻辑)。
  • 一次性事件: 设置 Start Closed = True,在满足条件时 Open 门,之后 Enter 就能触发事件(比如捡起关键道具后才能触发的对话)。
  • 区域封锁: 玩家进入特定区域前门关闭,完成任务后 Open 门允许进入。
  • 防止重复触发: 在处理耗时操作(如网络请求)时关闭门,防止玩家在操作完成前反复点击。
  • 持续伤害:当角色与特殊 Actor(毒气)重叠时,Gate 节点保持打开状态,并且每隔一秒对角色施加伤害。如果角色停止重叠,Gate 节点将关闭,且不再对角色施加伤害。

4,使用样例

(1)这里我使用不同的键盘数字按键来控制门状态和执行,由于是写在 Actor 中,因此首先需要使用“启用输入”节点启用输入。

(2)下面是一个 Gate 节点的使用样例:
  • 由于初始时门状态时关闭的,按下数字 1 页面不会打印信息。
  • 按下数字 2 打开门,再次按下数字 1 页面会打印信息。
  • 按下数字 3 关闭门,按下数字 1 页面不会打印信息。
  • 按下数字 4 则切换门的开/关状态。

(3)下面时另一个 Gate 节点使用样例,当角色与特殊 Actor(毒气)重叠时,Gate 节点保持打开状态,并且每隔一秒对角色施加伤害。如果角色停止重叠,Gate 节点将关闭,且不再对角色施加伤害。

五、MultiGate(多路门)

1,功能说明

(1)MultiGateGate 的增强版。提供多个输出引脚 (Out 0, Out 1, Out 2, ...),并可以控制执行流按顺序、随机或循环通过这些输出。
(2)MultiGate 提供了比 Sequence 更灵活的触发方式(顺序/随机/循环),但每个 Out 只触发一次(除非循环),而 SequenceThen 在每次 In 触发时都会按顺序执行所有。

2,引脚说明

(1)输入:
  • In (执行入口)
  • Reset (输入执行,将内部计数器或状态重置为起点)
(2)输出:
  • Out 0, Out 1, Out 2, ... (默认 3 个,可添加更多)
(3)参数:
  • Is Random (布尔):False (默认) 表示顺序执行;True 表示随机选择输出。
  • Loop (布尔):False (默认) 表示执行完所有输出引脚后,后续 In 触发无效;True 表示执行完最后一个引脚后,下一个 In 触发会从第一个引脚重新开始。
  • Start Index (整数):设置顺序模式下的起始输出引脚索引。

3,应用场景

  • 顺序播放多条语音/对话。
  • 随机播放多个音效(设置 Is Random = True)。
  • 在多个不同的巡逻点之间循环(Loop = True)。
  • 构建简单的状态机(每个 Out 对应一个状态处理)。
  • 抽奖系统(随机输出)。

4,使用样例

(1)下面样例每次按下数字键 1 都会依次打印相关信息:
  • 第一次交互:打印 Hello1
  • 第二次交互:打印 Hello2
  • 第三次交互:打印 Hello3
  • 第四次交互:无效果(因为 Loop=False

(2)如果设置 Loop=True,则第四次交互打印 Hello1

六、FlipFlop(触发器/乒乓开关)

1,功能说明

    像一个开关。每次触发时,在它的两个输出引脚 (AB) 之间交替执行。第一次触发走 A,第二次触发走 B,第三次又走 A,如此往复。

2,引脚说明

(1)输入: 
  • In (执行入口,每次触发都会导致输出切换)
(2)输出:
  • A (第一次、第三次、第五次...触发时执行)
  • B (第二次、第四次、第六次...触发时执行)

3,应用场景

  • 实现一个灯的开关:按一次开灯 (A),再按一次关灯 (B)。
  • 在两个不同的动画状态之间切换(如站立/蹲下)。
  • 在两个不同的武器之间切换(例如玩家使用双持手枪,开火时,只有其中一支手枪会进行射击。在下一枪中,另一只手枪会射击)。
  • 循环播放两段不同的音效。

4,使用样例

    下面样例中“以事件设置定时器”节点会让蓝图每秒执行一次自定义事件。“Flip Flop”节点会让蓝图在第一个一秒输出“True”,第二个一秒输出“False”,如此反复。
评论

全部评论(0)

回到顶部