数组的使用允许相同类型的变量组成一组。在蓝图中创建数组非常简单。创建一个新的变量然后选择预期的变量类型。除了选择变量的类型之外还有一个必须选择的按钮来确保变量类型为数组。如下方图片所示:
要了解数组的使用,我们将实现一个简单的蓝图,玩家触摸蓝图时打开和关闭一组灯(点灯)。
创建一个新的蓝图 和创建一个新变量称为“灯”。这个变量必须是"Point Light"类型的数组。选择“编辑”选项,所以我们可以在关卡编辑器定义“pointlights”,并将通过这个蓝图处理。“灯”变量看起来像这样:
蓝图的 组件模式中 ,你必须添加“盒子”组件,所以蓝图可以识别玩家的碰撞。
在添加了盒体之后我们有必要取消选择“游戏中隐藏”选项这样就会在游戏中出现。让我们这样做来简化整个测试
当"Actor Begin Overlap" 发生时,该蓝图的动作将被执行。“foreachloop”动作为每一个“灯”阵元素执行“Toggle可见”的动作:
“foreachloop”行动作为输入参数的数组,执行的行动都与输出引脚的“循环体”的阵列相关联,执行与输出引脚“循环体”相关联的动作,每个数组元素可以从输出引脚“数组元素”中获得。 例如,如果数组有四个元素的“循环”该动作将进行四次。之后,执行流指向输出引脚“完成”。
为了测试这个蓝图,我们需要在关卡中添加一些点光源
放置几个“点灯”彼此靠近。将新图纸添加到“点光源”附近的水平。在“细节”的蓝图选项卡观察变量“灯”。
是否可以通过单击“+”符号将其他元素添加到数组中。每个加入到关卡中的元素都有一个组合框,其中的列表是整个关卡的“点光源”。下面的图像显示我的例子中4个点光源被选择的情况。
请注意,数组的索引从零开始。所以一个数组有4个元素,位置则是0,1,2和3。该数组的一部分-点光源将由蓝图的动作打开和关闭。要测试,只需在编辑器中运行游戏,并使用一个actor来激活事件"Actor Begin Overlap"触发蓝图。
数组和"For Each Loop" 可以一起行动 "Get All Actors of Class" 操纵所有actor类/蓝图一起使用。 想象我们的蓝图操纵关卡所有的点光源,在这种情况下就不需要手动指定点的灯。下面的脚本演示如何切换一个关卡的所有点光源的可见性:
"Get All Actors of Class"执行动作返回一个actor类型的数组包含所有在"Actor Class" 选项中被选择的类的标准。这个数组可以用来在"For Each Loop" 动作中循环所有数组中的元素。为了访问“Point Light" 类,必须 对数组中的每个元素做"Cast"处理
让我们再举一个例子来说明另一种类型的“for循环”的使用。在这个例子中,我们将玩家的生命数作为屏幕上的图标,下面的图片显示玩家拥有3条生命。
为了使这个例子有必要建立一种基于HUD 蓝图并导入图像用于在屏幕上代表生命。
我们将使用“for循环”在屏幕上绘制图像。绘制图像的次数等于由整数变量“生命”表示的玩家的生命数:
原文标题:Arrays and For loops in Blueprints
原文链接:http://romeroblueprints.blogspot.jp/2014/10/arrays-and-for-loops-in-blueprints.html