返回 导航

UE5

hangge.com

UE5 - 流程控制节点功能介绍与使用详解3(ForLoop、ForEachLoop、WhileLoop、嵌套循环)

作者:hangge | 2025-08-19 08:45
    在虚幻引擎 5 的蓝图可视化脚本系统中,流程控制节点是构建复杂逻辑的基石。它们决定了代码执行的顺序、条件和重复性。我在之前的文章中介绍了其中一部分节点地功能和使用样例(文章1文章2),本文接着介绍剩余部分。

十一、ForLoop & ForLoopWithBreak(循环)

1,功能说明

用于执行固定次数的循环。ForLoopWithBreak 额外提供 Break 输入,允许在循环体内部提前终止循环。

2,引脚说明

(1)输入:
  • First Index (整数):循环起始索引 (通常为 0)。
  • Last Index (整数):循环结束索引(包含)。循环次数 = (Last Index - First Index) + 1
  • Break (输入执行)(ForLoopWithBreak 特有):在循环体内部调用此引脚可立即跳出循环,直接执行 Completed
(2)输出:
  • Loop Body (执行):每次循环执行的主体逻辑。提供 Index (整数) 输出当前循环索引。
  • Completed (执行):当所有循环都执行完毕后执行。

3,应用场景

  • 遍历数组元素(结合 Get (a copy) 和索引)。
  • 在场景中生成一排物体。
  • 批量初始化多个 Actor
  • 执行重复操作多次(如连续攻击)。
  • 搜索数组,找到目标后用 Break 跳出 (ForLoopWithBreak)。

4,使用样例

(1)下面样例运行后在“For Loop”节点中进行了 1~5 的循环,并同时将当前循环到的 Index 打印出来。循环结束时打印“结束”文字。

(2)下面是一个“For Loop With Break”样例,当 Index>=3 时则触发 break 中断,跳出循环。最终运行后打印的信息为:123、结束。

十二、ForEachLoop & ForEachLoopWithBreak(数组遍历)

1,功能说明

    专门用于遍历数组中的每个元素。ForEachLoop 会遍历数组的所有元素;ForEachLoopWithBreak 额外提供 Break 输入,允许在循环体内部提前终止遍历。

2,引脚说明

(1)输入:
  • Array (通配符数组):需要遍历的数组。类型由连接的数组决定。
  • Break (输入执行)(ForEachLoopWithBreak 专有):在循环体内部调用此引脚可立即跳出循环,直接执行 Completed
(2)输出:
  • Loop Body (执行):对数组中的每个元素执行一次的主体逻辑。提供:
    • Array Element (通配符):当前遍历到的数组元素。
    • Array Index (整数):当前元素在数组中的索引(从 0 开始)。
  • Completed (执行):当所有元素都遍历完毕后执行。

3,应用场景

  • 批量修改数组元素属性。
  • 在数组中查找符合条件的元素(找到后用 Break 跳出)。
  • 根据数组内容动态生成 UI 元素(如背包物品列表)。
  • 计算数组元素总和、最大值等。
  • 初始化或销毁数组中的所有 Actor

4,使用样例

(1)首先我们定义一个整数数组类型的变量 Datas,数组元素为 1357

(2)下面样例使用“For Each Loop”节点遍历这个数组元素然后打印出来。

(3)下面是一个“For Each Loop With Break”样例,当 Index>=2 时则触发 break 中断,跳出循环。最终运行后打印的信息为:135

十三、WhileLoop (While 循环 - 慎用!)

1,功能说明

(1)只要给定的布尔条件为真 (True),就重复执行循环体内的逻辑。
(2)当循环量很大时很容器造成无限循环而导致游戏崩溃,使用时务必注意循环量。
  • 极易造成无限循环和引擎崩溃! 如果 Condition 永远不为 False,或者 Loop Body 执行太快来不及更新 Condition 的状态,循环将永不停止,阻塞游戏线程(主线程),导致编辑器或游戏无响应("Not Responding")。
  • 虚幻引擎的蓝图执行是单线程的(游戏线程)。一个无限运行的 WhileLoop 会阻止其他所有蓝图逻辑、渲染、输入处理等。

2,引脚说明

(1)输入:
  • Condition (布尔):循环继续执行的条件(每次循环迭代前检查)。
(2)输出:
  • Loop Body (执行):每次条件为 True 时执行的主体逻辑。
  • Completed (执行):当条件变为 False 后执行。

3,应用场景

  • 理论上可用于需要未知次数的循环,直到某个条件满足。

4,使用样例

(1)首先我们定义两个整数类型的变量 AB,它们初始值分别为 110

(2)下面样例使用 while 巡检循环,A 初始值为 1B 初始值为 10,每次循环前检查 A<B 是否成立,循环时打印出 A 值并将 A+1。最后运行时可以看到打印出 1~9 数字。

附:实现嵌套循环

(1)嵌套循环是指一个循环套着另一个循环。这种循环的用处很多,如生成方阵、摆阵型和做计算等。例如下面样例总共循环执行 3*3=9 遍,使用格式化文本固定 X:Y 的格式,输出方阵的坐标。

(2)运行后打印出的信息如下:
评论

全部评论(0)

回到顶部