虚幻引擎 Make Map / Add to Map / Find in Map 节点

在虚幻引擎5(UE5)的蓝图中,Map(映射) 是一种键-值(Key-Value)对的数据容器,适合用于需要通过唯一键(Key)快速查找对应值(Value)的场景。下面将为你详细拆解 Make MapAdd to Map 和 Find in Map 这三个核心节点的具体用法与操作步骤。

1. Make Map:创建映射

Make Map 节点用于在蓝图的事件图表中,通过一系列键值对直接创建一个新的临时 Map

  • 输入 (Inputs):该节点默认提供一对 Key 0 和 Value 0 引脚

  • 输出 (Outputs):输出一个创建好的 Map

  • 具体操作步骤

    1. 在蓝图的事件图表中右键,搜索并添加 Make Map 节点

    2. 点击节点上的 “添加引脚” (Add Pin) 加号按钮,可以按需增加多组键值对

    3. 将你需要的数据连接到对应的 Key 和 Value 引脚上。

    4. 最后,将节点输出的 Map 传递给其他需要这个临时映射的节点使用。


2. Add to Map:添加或更新元素

Add to Map 节点用于向一个已存在的 Map 中添加新的键值对,或者更新一个已存在键的值。如果添加的键(Key)在 Map 中已存在,其对应的值(Value)将被覆盖

  • 输入 (Inputs)

    • Target Map:目标 Map 对象。

    • Key:要添加或更新的键。

    • Value:与该键对应的值。

  • 输出 (Outputs):无返回值,直接修改输入的 Target Map

  • 具体操作步骤

    1. 在事件图表中右键,搜索并添加 Add to Map 节点。

    2. 将你的 Map 变量连接到节点的 Target Map 引脚。

    3. 将键(Key)和值(Value)连接到对应的输入引脚。

    4. 该节点的执行线(白色箭头)被触发后,操作即生效。


3. Find in Map:查找元素

Find in Map 节点用于根据给定的键(Key),在 Map 中查找并返回其对应的值(Value)

  • 输入 (Inputs)

    • Target Map:目标 Map 对象。

    • Key:要查找的键。

  • 输出 (Outputs)

    • Value:找到的值。注意:此节点返回的是值的副本(Copy),而非引用。这意味着如果修改这个返回值,不会影响 Map 中的原始数据

    • Return Value:一个布尔值(Boolean),True 表示找到了该键,False 表示未找到

  • 具体操作步骤

    1. 在事件图表中右键,搜索并添加 Find in Map 节点。

    2. 将你的 Map 变量连接到节点的 Target Map 引脚。

    3. 将要查找的键(Key)连接到 Key 输入引脚。

    4. 节点执行后,可以通过 Return Value 引脚判断查找是否成功,并从 Value 引脚获取查找到的值。


完整使用案例:玩家物品背包系统

下面通过一个“玩家物品背包”的案例,展示如何组合使用这三个节点。

场景设定:我们需要一个系统,能用物品ID(整数)快速查找对应的物品数量(整数)。

步骤 1:创建 Map 变量

  1. 在蓝图(如玩家角色蓝图或游戏实例蓝图)的变量(Variables) 面板中,点击 “+” 新建变量,命名为 InventoryMap

  2. 在右侧的细节(Details) 面板中,将变量类型(Variable Type) 设置为 Map

  3. 设置 Key 类型 为 Integer(整数,代表物品ID),Value 类型 也设置为 Integer(整数,代表物品数量)

步骤 2:初始化背包(使用 Make Map)

  1. 在事件图表中,找到 Event BeginPlay 节点。

  2. 从 Event BeginPlay 的执行引脚拖出一条线,添加 Make Map 节点。

  3. 点击 Make Map 节点上的 “添加引脚”,添加两组键值对,例如:

    • Key 0: 1, Value 0: 10 (代表ID为1的物品有10个)

    • Key 1: 2, Value 1: 5 (代表ID为2的物品有5个)

  4. 将 Make Map 节点输出的 Map,连接到 Set [InventoryMap] 节点,将生成的临时 Map 赋值给我们的背包变量。

步骤 3:添加或更新物品(使用 Add to Map)

  1. 当玩家拾取物品时(例如,在一个拾取事件中),添加 Add to Map 节点。

  2. 将 InventoryMap 变量连接到 Add to Map 节点的 Target Map 引脚。

  3. 将拾取到的物品ID连接到 Key 引脚,将数量连接到 Value 引脚。

  4. 此操作会自动处理:如果该物品ID不存在,则添加新条目;如果已存在,则更新其数量

步骤 4:查找物品数量(使用 Find in Map)

  1. 当需要查询某个物品的数量时(例如,在UI显示或检查任务物品时),添加 Find in Map 节点。

  2. 将 InventoryMap 变量连接到 Target Map 引脚。

  3. 将要查询的物品ID连接到 Key 引脚。

  4. 从 Find in Map 节点的 Return Value 引脚拖出一条线,添加一个 Branch(分支)节点来判断查找是否成功。

  5. 如果 Branch 为 True,则从 Find in Map 节点的 Value 引脚获取到的就是该物品的数量;如果为 False,则表示背包中没有该物品。

总结

  • Make Map:用于一次性创建一个包含初始数据的 Map。

  • Add to Map:用于添加新元素或更新现有元素,是修改 Map 内容的主要方式。

  • Find in Map:用于查找元素,返回值的副本和一个指示是否成功的布尔值。

掌握这三个节点,你就能在UE5蓝图中灵活地运用 Map 数据结构来管理各种键值对数据了。

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容