ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unreal Engine 4 蓝图完全学习教程(八)—— 循环(2)ForEachLoop

2020-07-05 22:02:29  阅读:322  来源: 互联网

标签:Engine num 节点 Unreal 数组 连接 输入 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”。

 

 

最后编译运行,即可得到数组中五个整数的平均值输出:

 

 

标签:Engine,num,节点,Unreal,数组,连接,输入,ForEachLoop
来源: https://www.cnblogs.com/MilkoSilver/p/13252086.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有