蓝图 Map

在蓝图中创建和编辑高级容器类 Map 容器,包括此容器的属性总览。

Choose your operating system:

Windows

macOS

Linux

参见

虚幻引擎4中的蓝图应用程序编程接口(API)有一个 Map 容器类型。和 数组(Array) 以及 集合(Sets) 类似,蓝图Map在开发游戏时有各种用途。 如你不了解"容器",可将其想象为一个储物盒。你可将项目进行标记并放置在盒中以便立即(或之后)使用。如你已使用 Array 存储并使用项目集,则意味着其实你已经开始使用 UE4 中的蓝图容器。举例而言,使用 Array 存储项目以便之后使用的时候,项目的标签便是其在 Array 中的位置。 Map 和 Array 相似,两者均使用标签说明 项目在容器中的位置,然而 Map 的标签与 Array 的标签有所不同。使用 Array 时,标签是容器中项目的顺序索引;而使用 Map 时,标签是容器中与项目相关的一个键。能够将容器中的项目与其相应的键关联起来后,开发者便能够使用关联键有效查找和检索项目,从而用创意的方式处理 Map。

通读此页后,你将了解到如何创建和编辑蓝图 Map。你还将了解到 Map 的属性,它们将助你在游戏项目中充分发挥 Map 的优势。

为便于说明,我们使用一个 空白项目 (带下图中框中的设置)为你展示如何创建和编辑蓝图 Map。

点击查看大图。

创建 Map

根据以下步骤即可新建蓝图 Map。

  1. 如无可用蓝图类,需要为项目 添加 一个新的蓝图类。

    点击查看大图。

  2. 然后从 Pick Parent Class 菜单中选中 Actor

    creatingMaps_Step2.png

  3. 为 Actor 类命名后,在 Content Browser 中双击将新建的 Actor 类打开。

    点击查看大图。

  4. 选择 Event Graph 标签,开始编辑 Actor 的蓝图脚本。

    点击查看大图。

  5. Actor 的 事件图表 打开后,将鼠标指针悬停在 Variables 子菜单上,显示 + Variable 按钮。

    点击查看大图。

  6. 新建一个 字符串 变量,将其命名为 MyStringIntegerMap

    点击查看大图。

    虽然变量的命名看似有些老学究,但重点是变量命名,尤其是 MyStringIntegerMap 可告知用户 Map 将拥有一个与整数类值关联的字符串类键。

  7. 当前 MyStringIntegerMap 是一个单一 字符串 变量。点击 Variable Type 按钮即可开始将 MyStringIntegerMap 装入 Map 容器。此按钮位于 Actor 的 Details 面板中 Variable Type 标签的右侧。

    点击查看大图。

  8. 此时将出现一个下拉菜单,显示 4 个容器选项。选择以下选项将 MyStringIntegerMap 转为蓝图 Map:

    creatingMaps_Step8.png

检查 MyStringIntegerMap 变量类型 ,确认 Map 的键类型是 String ,值类型为 Integer

creatingMaps_Step9.png

编辑 Map

编辑新建的 Map 之前,需要编译封装 Map 变量容器的蓝图。

点击查看大图。

  1. 点击蓝图的 Compile 按钮编辑 MyStringIntegerMap

    点击查看大图。

  2. 编译蓝图后,Map 的 Default Value (位于 Details 面板中)显示 MyStringIntegerMap 为空。

    点击查看大图。

  3. 点击 + 按钮即可将新键值对添加到 MyStringIntegerMap ,此按钮位于 Details 面板 Default Value 菜单中 0 Map elements 旁。

    creatingMaps_Step13.png

  4. 再次点击 + 按钮。

    creatingMaps_Step14.png

    如在更新新键值对的默认键之前尝试将键添加到到蓝图 Map,虚幻编辑器将发出警告。
    Step14_Warning.png

  5. 将 3 个键值对添加到 MyStringIntegerMap ,使其与下图匹配:

    creatingMaps_Step15.png

  6. 现在多添加一个键值对,将键命名为 Banana

    creatingMaps_Step16.png

    如尝试将重复的键添加到蓝图 Map,虚幻编辑器将发出警告。虽然允许重复值,但不允许重复键。 Step16_Warning.png

  7. 了解之前提及的警告,将第四个键命名为 Date ,并将值设为 2。

creatingMaps_Step17.png

干得漂亮!你便已经新建了一个蓝图 Map,添加并编辑了四个键值对。

容器属性

如果想开始了解在 UE4 中使用蓝图 Map 容器,请参考以下属性列表。

  • Map 中的键必须独一无二。

  • Map 中的所有键必须被定义(设定初值)。

  • 当前蓝图 Map 中只支持单一键值对。

  • 使用 Map 中相关联的键添加、移除和寻找值运算速度极快。

  • 当前 Map 值为不可变,意味着它们创建后便不能进行修改。

  • 虽然不同值类的键类可能不同,但一个 Map 中所有键和值均为齐次(类型相同)。换言之,如果一个特定 Map 的键被指定为字符串类,其值被指定为整数类;那么随后所有的键均为字符串,随后所有的值均为整数。

学习到如何在蓝图中创建和编辑 Map 容器后,即可查阅 蓝图 Map 节点 参考指南,了解蓝图 Map 节点接口的详细内容。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消