Choose your operating system:
Windows
macOS
Linux
如您不熟悉编程术语,理解 数组 的最佳方式是将其看作包含在单一实体中的一批同类型变量。举例而言,如要创建一个 Float 数组,该数组只能包含 Float 变量。创建数组后,可在数组中访问个体变量并对其进行修改,或在数组中一次性修改所有物品(在处理重复性工作时可极大提高工作效率)。
在本页中,您将学习如何在蓝图中创建数组变量,以及如何使用 Make Array 节点创建数组。理解如何创建数组后,可在 范例数组使用 章节查看使用数组的范例。
数组变量
可通过下列步骤创建数组变量。
-
在蓝图中点击 Add Variable 按钮,为变量命名并设置变量类型。
在上图中创建了一个名为 TextArray 的 文本 变量。
-
在变量的 Details 面板中,点击 Variable Type 旁的 数组 网格按钮。
此操作将把变量转换为数组。
-
点击 Compile 按钮,然后在 Default Value 下点击垃圾筐图标旁的 + 符号,为数组添加内容。
-
可添加任意数量的元素到数组,并在索引中指派其数值。
在上例中我们创建了一个文字数组,首个输入设为 Hello! ,第二输入 GoodBye! ,第三输入设为 ... 。该例可用于用 NPC,基于设置的各种条件以不同文本回应玩家。
如上图所示,数组使用 从零开始 的索引值,意味着首个索引为 0 而非 1。填充数组时请牢记这点。在通过索引值访问数组中的内容时,如需从第一个开始访问,需要输入的索引值为 0 而非 1。如需访问第二个,则需输入索引值 1,以此类推。
创建数组
创建数组变量时,通过变量的默认值设置定义出现在数组中的内容。存在数组动态填充的情况,举例而言,使用关卡中存在的 Actors 填充数组。在这种情况下,可使用 Make Array 节点以一系列内容创建一个数组,无需创建数组变量并指派默认值。
举例而言,关卡中需要摄像机 Actors 数组,使其在每个 Actor 间循环。
以下步骤说明如何使用 Make Array 节点。
-
在关卡中放置数个 Actors (在本例中为 CameraActors)后,将它们全部选中并在 Level Blueprint 中打开。
-
在图表中 单击右键 并选择 Add Reference to Selected Actors 选项。
-
为数组所含的 Actors 添加引用后,在图表中 单击右键 并添加 Make Array 节点。
-
在 Make Array 节点上,点击 + 符号添加每个 Actor 出现在数组中所需的引脚数量。
-
拖动一个 Actor 并将它和 Make Array 节点上的 0 (或任意其他引脚)连接起来。
此操作将把数组换转为所选 Actor 的数组类型(Error 报错提示将在编译后消失)。
-
将其他 Actors 和 Make Array 节点上其余的引脚连接起来。
-
拖动 Array 引脚,搜索并添加 Get 节点。
Get 节点上框中的值是从 Make Array 节点访问(Get 节点)的 索引 (数组元素)。
它也可能是下图中名为 Get Camera 的 整数 变量。
利用一些脚本形态,可将 Get Camera 设为 整数值,有效地改变 Get 节点中选择的 Camera Actor 。下图中的设置可用于在关卡中放置的摄像机 Actors 之间产生循环。
范例数组使用
在本例中,我们将使用数组在关卡中的随机位置生成随机蓝图效果。
在此实例中,我们使用的是启用了 新手内容 的 Blueprint Third Person 模板 项目。
-
在项目中,找到 放置Actor(Place Actors) 面板的 所有类(All Classes) 选项卡,将 5 个 Target Points 拖入关卡。
它们将用作效果的生成位置。
-
在 World Outliner 中,搜索 Target ,然后按住 Shift 选择全部目标点。
-
在主工具栏上,点击 Blueprints 按钮,然后点击 Open Level Blueprint 。
-
在图表中 单击右键 并选择 Create References to 5 selected Actors 选项。
此操作将为关卡中所有目标点创建引用,以便进行访问。
-
再次在图表中 单击右键 ,搜索并添加 Make Array 节点。
-
在 Make Array 节点上点击四次 + 符号,将引脚添加至节点,然后连接目标点。
-
在图表中 单击右键 并添加 F 按键事件,关闭 Pressed 引脚,添加一个 Spawn Actor from Class 节点。
-
在 MyBlueprint 窗口中,创建一个 Actor 类类型的新变量。
-
将变量命名为 ActorClassArray ,点击 数组 网格图标,将变量转换为数组。
-
点击 Compile ,然后在 Default Value 部分添加 3 个 Actors(使用的是火焰、爆炸和火花效果)。
-
按住 Control 键拖入 ActorClassArray 变量,然后拖动它并创建一个 Get 节点。
-
关闭 Index 引脚,搜索并添加 Random Integer in Range 节点。
-
将 Max 值设为 2 ,然后将 Get 引脚和 Spawn Actor 节点上的 Class 引脚连接起来。
因为索引值从 0 开始,所以将 Max 值设为 2,便可获得每个 Actors。
-
拖动 Make Array 节点的输出引脚并添加一个 Get 节点。
-
关闭 Index 引脚,再次添加 Random Integer in Range 节点并将 Max 值设为 4。
-
关闭 Get 引脚,搜索并添加 Get Actor Transform 节点。
-
将 Return Value 从 Spawn Actor 节点上的 Get Actor Transform 引脚连至 Spawn Transform 引脚。
-
点击 Compile 和 Save 按钮,完成后的图表外观如下。
-
关闭蓝图,然后点击 Play 按钮在编辑器中开始游戏。
在编辑器中进行游戏时,每次按下 F 键,一个随机蓝图(从添加至数组中的蓝图中随机选择)将被选中并在一个位置随机生成(从数组的目标点中随机选择)。除利用 F 按键事件生成物品和效果外,还可使用相同逻辑为回复品或弹药随机生成出现地点,甚至掠夺玩家拥有的物品。