使用阵列

如您不熟悉编程术语,理解 阵列 的最佳方式是将其看作包含在单一实体中的一批同类型变量。举例而言,如要创建一个 Float 阵列,该阵列只能包含 Float 变量。创建阵列后,可在阵列中访问个体变量并对其进行修改,或在阵列中一次性修改所有物品(在处理重复性工作时可极大提高工作效率)。

在本页中,您将学习如何在蓝图中创建阵列变量,以及如何使用 Make Array 节点创建阵列。理解如何创建阵列后,可在 范例阵列用法 章节查看使用阵列的范例。

如需了解详细内容和用法,请查阅 蓝图数组数组节点 文档。

阵列变量

可通过下列步骤创建阵列变量。

  1. 蓝图中点击 Add Variable 按钮,为变量命名并设置变量类型。

    HT1.png

    在上图中创建了一个名为 TextArray文本 变量。

  2. 在变量的 Details 面板中,点击 Variable Type 旁的 阵列 网格按钮。

    HT2.png

    此操作将把变量转换为阵列。

    HT3.png

  3. 点击 Compile 按钮,然后在 Default Value 下点击垃圾筐图标旁的 + 符号,为阵列添加内容。

    HT4.png

  4. 可添加任意数量的元素到阵列,并在索引中指派其数值。

    HT5.png

    在上例中我们创建了一个文字阵列,首个输入设为 Hello!,第二输入 GoodBye!,第三输入设为 ...。该例可用于用 NPC,基于设置的各种条件以不同文本回应玩家。

如上图所示,阵列使用 从零开始 的索引值,意味着首个索引为 0 而非 1。填充阵列时请牢记这点。在通过索引值访问阵列中的内容时,如需从第一个开始访问,需要输入的索引值为 0 而非 1。如需访问第二个,则需输入索引值 1,以此类推。

创建阵列

创建阵列变量时,通过变量的默认值设置定义出现在阵列中的内容。存在阵列动态填充的情况,举例而言,使用关卡中存在的 Actors 填充阵列。在这种情况下,可使用 Make Array 节点以一系列内容创建一个阵列,无需创建阵列变量并指派默认值。

举例而言,关卡中需要摄像机 Actors 阵列,使其在每个 Actor 间循环。

以下步骤说明如何使用 Make Array 节点。

  1. 在关卡中放置数个 Actors (在本例中为 CameraActors)后,将它们全部选中并在 Level Blueprint 中打开。

  2. 在图表中 单击右键 并选择 Add Reference to Selected Actors 选项。

  3. 为阵列所含的 Actors 添加引用后,在图表中 单击右键 并添加 Make Array 节点。

    HT6.png

  4. Make Array 节点上,点击 + 符号添加每个 Actor 出现在阵列中所需的引脚数量。

    HT7.png

  5. 拖动一个 Actor 并将它和 Make Array 节点上的 0 (或任意其他引脚)连接起来。

    HT8.png

    此操作将把阵列换转为所选 Actor 的阵列类型(Error 报错提示将在编译后消失)。

  6. 将其他 Actors 和 Make Array 节点上其余的引脚连接起来。

    HT9.png

  7. 拖动 Array 引脚,搜索并添加 Get 节点。

    HT10.png

    Get 节点上框中的值是从 Make Array 节点访问(Get 节点)的 索引(阵列元素)。

    它也可能是下图中名为 Get Camera整数 变量。

    HT11.png

    利用一些脚本形态,可将 Get Camera 设为 整数值,有效地改变 Get 节点中选择的 Camera Actor。下图中的设置可用于在关卡中放置的摄像机 Actors 之间产生循环。

    HT12.png

范例阵列使用

在本例中,我们将使用阵列在关卡中的随机位置生成随机蓝图效果。

在此实例中,我们使用的是启用了 新手内容Blueprint Third Person 模板 项目。

  1. 在项目中 Basic 标签上的 Modes 菜单中,将 5 个 Target Points 拖入关卡。

    HT13.png

    它们将作为效果生成的地点。

  2. World Outliner 中,搜索 Target,然后按住 Shift 选择全部目标点。

    HT14.png

  3. 在主工具栏上,点击 Blueprints 按钮,然后点击 Open Level Blueprint

    HT15.png

  4. 在图表中 单击右键 并选择 Create References to 5 selected Actors 选项。

    HT16.png

    此操作将为关卡中所有目标点创建引用,以便进行访问。

  5. 再次在图表中 单击右键,搜索并添加 Make Array 节点。

    HT17.png

  6. Make Array 节点上点击四次 + 符号,将引脚添加至节点,然后连接目标点。

    HT18.png

  7. 在图表中 单击右键 并添加 F 按键事件,关闭 Pressed 引脚,添加一个 Spawn Actor from Class 节点。

    HT19.png

  8. MyBlueprint 窗口中,创建一个 Actor 类类型的新变量。

    HT20.png

  9. 将变量命名为 ActorClassArray,点击 阵列 网格图标,将变量转换为阵列。

  10. 点击 Compile,然后在 Default Value 部分添加 3 个 Actors(使用的是火焰、爆炸和火花效果)。

    HT21.png

  11. 按住 Control 键拖入 ActorClassArray 变量,然后拖动它并创建一个 Get 节点。

  12. 关闭 Index 引脚,搜索并添加 Random Integer in Range 节点。

    HT22.png

  13. Max 值设为 2,然后将 Get 引脚和 Spawn Actor 节点上的 Class 引脚连接起来。

    HT23.png

    因为索引值从 0 开始,所以将 Max 值设为 2,便可获得每个 Actors。

  14. 拖动 Make Array 节点的输出引脚并添加一个 Get 节点。

  15. 关闭 Index 引脚,再次添加 Random Integer in Range 节点并将 Max 值设为 4。

  16. 关闭 Get 引脚,搜索并添加 Get Actor Transform 节点。

    HT24.png

  17. Return ValueSpawn Actor 节点上的 Get Actor Transform 引脚连至 Spawn Transform 引脚。

  18. 点击 CompileSave 按钮,完成后的图表外观如下。

    HT25.png

  19. 关闭蓝图,然后点击 Play 按钮在编辑器中开始游戏。

    在编辑器中进行游戏时,每次按下 F 键,一个随机蓝图<(从添加至阵列中的蓝图中随机选择)将被选中并在一个位置随机生成(从阵列的目标点中随机选择)。除利用 F 按键事件生成物品和效果外,还可使用相同逻辑为回复品或弹药随机生成出现地点,甚至掠夺玩家拥有的物品。