Language:
Page Info
Tags:
Skill Level:
Engine Version:
Share

3 - 为 Map 添加键和值

现在您有了一个 TextRender Actor,显示上一步中定义的蓝图 Map 的关联值。 在这步中,您将了解如何 添加 键值对到 Map,随后显示 Map 的键和关联值。

  1. 在项目的 Content Browser 中,双击 Display Map TextRender Actor 打开其蓝图 事件图表

    点击查看全图。

  2. 您将看到 Display Map TextRender Actor 蓝图 事件图表,可在此处添加一个新的蓝图 Map,用于 添加 新的键值对,随后再将 Map 的键和关联值显示到 视口 中。

    点击查看全图。

  3. 此时,您需要为即将进行的 添加 操作创建一个新的蓝图 Map 容器。右键单击 Instruction Map 变量并从下拉菜单中选择 Duplicate 创建一个新蓝图 Map 变量,将其命名为 Weapon Inventory Map

    Step3_3.png

  4. 请确保新的 Map 容器与以下属性匹配,在此容器中键为 String,值为 Integer:

    Step3_4.png

    为便于展示,您需要创建一个武器栏蓝图 Map 容器,在此容器中键为武器名,值为武器的弹量。

  5. 选择新蓝图 Map 后将出现 Default Value 消息 Please compile the blueprint

    点击查看全图。

  6. 点击 Compile 按钮。

    点击查看全图。

  7. 编译蓝图后,Default Value 将消失,为默认键值对让路。

    点击查看全图。

  8. 此时,编辑器也会发出如下警告:

    点击查看全图。

    UE4 发出此警告的原因是您正通过复制 Instruction Map(这是拥有 Integer-String 键值属性的蓝图 Map)来创建 Weapon Inventory Map(而这是拥有 String-Integer 键值属性的蓝图 Map)。 在复制过程中,引擎将解析属于 Instruction Map 的键值对,尝试将它们复制到 Weapon Inventory Map 的键值对中。而这并非有益的操作。

    点击查看全图。

  9. 用以下键值对填充新的 Weapon Inventory Map 容器:

    Step3_9.png

  10. 点击 Compile 按钮。

    点击查看全图。

  11. 用正确类型的键值对填充 Weapon Inventory Map 容器,满足新蓝图 Map 的键值属性要求后,警告便会消失。

    点击查看全图。

  12. 在为现有蓝图事件图表添加新逻辑之前,需要将 Weapon Inventory Map 变量拖入蓝图。

    点击查看全图。

编写逻辑脚本

  1. Weapon Inventory Map 节点连出引线,从 Map Utilities 接口添加 Keys 节点,即可开始构建新逻辑。

    点击查看全图。

    Keys 节点将输出 Weapon Inventory Map 中所有键的 Array。

  2. 从属于 Keys 节点的 Array 输出引脚连出引线,搜索并添加 ForEachLoop 节点。

    点击查看全图。

  3. 现在从属于 ForEachLoop 节点的 Array Element 引脚连出引线,搜索并添加 Print String 节点。

    点击查看全图。

  4. 右键点击蓝图图表打开 快捷菜单,然后搜索并添加 Event ActorBeginOverlap

    点击查看全图。

  5. Event ActorBeginOverlap 节点的 Other Actor 引脚连出引线,然后搜索并添加 Cast To FirstPersonProjectile 节点。

    点击查看全图。

  6. 现在将 Cast To FirstPersonProjectile 节点连接到 Keys 节点。

    点击查看全图。

显示 Map 的键

在此时进入编辑器 Play in Editor(PIE)模式,即可向 Display Map TextRender Actor 的碰撞方块射出发射物,显示 Weapon Inventory Map 中所包含的键 Array。

点击查看全图。

完成脚本

  1. 现在即可将新键值对添加到容器中。将 Weapon Inventory Map 变量拖入蓝图即可完成此操作。

    点击查看全图。

  2. Weapon Inventory Map 变量连出引线,然后从 Map Utilities 接口添加 Add 节点。

    点击查看全图。

  3. 现在定义需要添加的键值对,将 Weapon 6 定义为键,60 定义为值。

    点击查看全图。

  4. Add 节点的 Boolean Return Value 引脚连出引线,搜索并添加 Branch 节点。

    点击查看全图。

  5. 在设置更多显示逻辑前展示你添加的键,需要将 Weapon Inventory Map 变量拖入蓝图。

    点击查看全图。

  6. 现在从 Weapon Inventory Map 变量连出引线,然后从 Map Utilities 接口添加 Keys 节点。

    点击查看全图。

  7. 从属于 Keys 节点的 Array 输出引脚连出引线,搜索并添加 ForEachLoop 节点。

    点击查看全图。

  8. 现在从属于 ForEachLoop 节点的 Array Element 引脚连出引线,搜索并添加 Print String 节点。

    点击查看全图。

  9. 点击 Text Color 框打开 Color Picker 菜单。

    点击查看全图。

  10. 将颜色设为以下的值:

    Step3_28.png

  11. 在设置更多显示逻辑前展示你添加的值,需要将 Weapon Inventory Map 变量拖入蓝图。

    点击查看全图。

  12. 现在从 Weapon Inventory Map 变量连出引线,然后从 Map Utilities 接口添加 Values 节点。

    点击查看全图。

  13. 从属于 Values 节点的 Array 输出引脚连出引线,搜索并添加 ForEachLoop 节点。

    点击查看全图。

  14. 现在从属于 ForEachLoop 节点的 Execute Output 引脚连出引线,搜索并添加 Print String 节点。

    点击查看全图。

  15. 从属于 ForEachLoop 节点的 Array Element 引脚连出引线,将其连接到属于 Print String 节点的 In String 引脚。

    点击查看全图。

  16. 点击 Text Color 框打开 Color Picker 菜单。

    点击查看全图。

  17. 将颜色设为以下的值:

    Step3_35.png

  18. Branch 节点的 True 引脚连到 Keys 节点。

    点击查看全图。

  19. Branch 节点的 False 引脚连到 Values 节点。

    点击查看全图。

  20. Cast To FirstPersonProjectile 节点的 Cast Failed 引脚连接到 Add 节点,完成脚本逻辑。

    点击查看全图。

  21. 检查完成的脚本后,点击 Compile 按钮。

    点击查看全图。

  22. 最后点击 Save 按钮,然后返回编辑器的 视口 界面。

    点击查看全图。

  23. 在编辑器的 视口 界面中,点击 Play 按钮查看工作状态下的更新脚本。

    点击查看全图。

最终结果

如视频中所示,向 Display Map TextRender Actor 的碰撞方块发射 First Person Projectile 时,最初的五个键将被显示到 视口。穿过碰撞方块时将添加新的键,随后进行显示。退出碰撞方块后,再发射一个 First Person Projectile 来确认新添加的键。最后,第二次穿过碰撞方块,所有数值均会被显示。

Tags