虚幻引擎 Add / Add Unique 节点

在虚幻引擎5中,AddAdd Unique是用于操作数组(Array) 的核心节点,主要区别在于是否检查元素的唯一性。

节点 功能 行为
Add 向数组末尾添加一个新元素 无论数组中是否已有相同值的元素,都会直接添加,数组长度+1
Add Unique 仅当数组中不存在相同值的元素时,才将其添加到末尾 若元素已存在,则添加失败,数组保持不变

🧑‍💻 详细使用案例与步骤

我们通过一个“管理背包物品”的案例来演示。假设你有一个 NameArray (名称数组) 变量,记录背包中物品的名字。

1. 使用 Add 节点

  • 目标:不管背包里是否已有“药水”,都将其加入。

  • 步骤

    1. 创建数组变量:在蓝图“我的蓝图”面板点击“+”,新建一个变量,类型选为 Name 的数组。

    2. 放置节点:在事件图表中右键,搜索并添加 Add 节点

    3. 连接节点:将 Add 节点的 Target Array 引脚连接到你的数组变量(或直接拖拽变量到图表选择“获取”),New Item 引脚输入要添加的元素,如“药水”

    4. 触发执行:用任何事件(如“E键按下”)连接到 Add 节点的执行输入引脚

  • 结果演示

    • 初始数组:["剑", "盾牌"]

    • 执行 Add 添加“药水”后,数组变为:["剑", "盾牌", "药水"]

    • 再次执行 Add 添加“药水”,数组变为:["剑", "盾牌", "药水", "药水"] (允许重复)

2. 使用 Add Unique 节点

  • 目标:只有背包里没有“药水”时,才将其加入。

  • 步骤

    1. 放置节点:搜索并添加 Add Unique 节点

    2. 连接节点:连接方式与 Add 节点完全相同

  • 结果演示

    • 初始数组:["剑", "盾牌"]

    • 执行 Add Unique 添加“药水”,数组变为:["剑", "盾牌", "药水"] (添加成功)

    • 再次执行 Add Unique 添加“药水”,数组保持不变["剑", "盾牌", "药水"] (添加失败)

💡 返回值与错误处理

Add Unique 节点有一个 Return Value (整数) 输出引脚,返回新元素在数组中的索引。如果添加失败(元素已存在),则返回 -1

你可以利用这个返回值进行逻辑分支:

  1. 将 Add Unique 节点的 Return Value 连接到 Branch (分支) 节点的条件输入。

  2. 由于 -1 在布尔逻辑中为 False,其他值为 True

    • 连接 Add Unique 的执行输出到 Branch

    • 如果返回 -1 (False),执行 False 分支,表示添加失败。

    • 否则,执行 True 分支,表示添加成功。

⚠️ 性能提示

  • Add 节点:执行效率高,因为它不进行任何检查,直接添加。

  • Add Unique 节点:执行前会遍历整个数组以检查重复。因此,当数组非常大时,频繁使用 Add Unique 可能带来性能开销。如果对性能有极致要求且能保证数据不重复,优先使用 Add

🤔 常见问题

  • Add Unique 为什么总是添加失败?
    检查要添加的元素的数据类型是否与数组定义的类型完全一致。例如,字符串的大小写或空格不同,会被视为不同元素。

  • Add 和 Add Unique 可以用于结构体(Struct)吗?
    可以。Add Unique 会比较结构体的所有成员变量是否完全相同。

  • 如何一次性添加多个元素?
    使用 Append 节点,它可以将一个数组的所有元素添加到另一个数组的末尾

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

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

昵称

取消
昵称表情代码图片

    暂无评论内容