Unreal Engine 4 蓝图完全学习教程(八)—— 循环(2)ForEachLoop
Ⅰ、数组于ForEachLoop
数组是一种特别的值,可对多个值进行集中管理。处理保管于数组中的所有数据时会用到循环,如利用敌人角色的数组使他们同时动作。
而处理数组中的所有元素,可以使用“ForEachLoop”循环,它是专门处理数组的ForLoop循环。传递数组后,可按顺序从数组中取出值并进行处理。
首先准备一个数组,点击左侧“我的蓝图”中的“变量”处的“+”号,新建一个名为“data”的变量:
接着在右侧“细节”栏中修改参数信息(将变量数据类型修改成整数,并将变量变更为数组):
然后点击编译,编译完成后继续在细节面板中“默认值”处单击“+”号为数组创建初始值:
Ⅱ、ForEachLoop节点
右击图表,输入“foreach”,选择“工具”内的“数组”项目中的“ForEachLoop”选项创建“ForEachLoop”节点:
ForEachLoop节点:
ForEachLoop节点是用于处理数组的专用节点,其输入输出项也是结合数组由ForLoop演变而来的:
ForEachLoop节点的输入项:
- Exec:连接执行处理的顺序。
- Array:连接要处理的数组。
ForEachLoop节点的输出项:
- Loop Body:将循环处理的内容连接至此以创建处理。
- Array Element:在ForEachLoop中将以顺序从数组中取出值,所取出的值从此处获得。
- Array Index:可获得取出值的Index编号。
- Completed:数组处理全部完成后,用于连接至后续的处理。
接下来将数组节点拖动到图表中(选择获取data),并将“Data”连接至“ForEachLoop”:
Ⅲ、创建以ForEachLoop进行的循环处理
使用ForEachLoop,首先计算data数组的总数,然后将所得的值除以data值的数量得到平均值。
首先,创建一个名为“num”的变量用来记录总数,初值为0:
接着将该变量拖动到图表中,选择设置num。然后右键图表,输入“+”,选择“integer+integer”选项。再将num变量拖动到图表中,选择获取num:
然后进行节点的连接:
①将“Num”节点连接至“+”节点的任意一个输入项;
②将“ForEachLoop”的“Array Element”连接至“+”节点的另一个输入项;
③将“+”节点的输出项连接至“设置”节点的“Num”;
④将“Begin Play”的exec输出项连接至“ForEachLoop”的“Exec”;
⑤将“ForEachLoop”的“Loop Body”连接至“设置”的exec输入项;
⑥将“ForEachLoop”的“Completed”连接至“Print String”的exec输入项。
Ⅳ、准备Print String的内容
最后需要将平均值的结果使用Print String节点进行输出。总数已经从变量num中获得,接下来是求平均值并通过Print String显示。
首先,复制一个获得num的节点。然后右击图表,输入“/”,选择“integer/integer”选项。再次右击图表,输入“length”并选择“工具”内的“数组”中的“Length”选项:
然后对节点进行连接:
①将“Data”连接至“LENGTH”;
②将“Num”连接至“÷”上方的输入项;
③将“LENGTH”连接至“÷”下方的输入项;
④将“÷”连接至“Print String”的“In String”。
最后编译运行,即可得到数组中五个整数的平均值输出: