Language:
Page Info
Skill Level:
Engine Version:
Share

蓝图 Map

本页面的内容:

虚幻引擎4.15版本发布后,Map 容器类已被加入 蓝图应用程序编程接口(API) 。 如您不了解“容器”,可将其想象为一个储物盒。您可将项目进行标记并放置在盒中以便立即(或之后)使用。如您已使用 Array 存储并使用项目集,则意味着其实您已经开始使用 UE4 中的蓝图容器。举例而言,使用 Array 存储项目以便之后使用的时候,项目的标签便是其在 Array 中的位置。Map 和 Array 相似,两者均使用标签说明 项目在容器中的位置,然而 Map 的标签与 Array 的标签有所不同。使用 Array 时,标签是容器中项目的顺序索引;而使用 Map 时,标签是容器中与项目相关的一个键。能够将容器中的项目与其相应的键关联起来后,开发者便能够用创意的方式处理 Map,使其成为蓝图 API 的极大补充。

蓝图 Map 是对蓝图 API 的极佳补充,因为它是 Array 之后 UE4 中又一个广泛使用的容器。Map 如此流行的原因是因为开发者能使用关联键有效查找和检索项目。与 Array 和 Set 相似,开发游戏时蓝图 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 节点接口的详细内容。

相关页面