虚幻引擎 Remove Item 节点

Remove Item 节点概述

Remove Item 是虚幻引擎5蓝图中的数组操作节点,属于 Utilities | Array 类别。它的核心功能是:从数组中移除所有与指定值匹配的元素实例

节点输入

引脚 类型 说明
Target Array 通配符数组 要进行移除操作的数组
Item 通配符 要从数组中移除的元素值

节点输出

引脚 类型 说明
Return Value Boolean 成功移除一个或多个元素时返回 True,否则返回 False

完整使用案例:背包物品移除系统

以下是一个在虚幻引擎5中从背包数组移除指定物品的完整操作步骤。

步骤一:创建数据结构

  1. 新建结构体(Struct)

    • 在内容浏览器中右键 → 蓝图 → 结构体(Structure)

    • 命名为 F_ItemData

    • 添加以下变量:

      • ItemName(文本类型)

      • ItemID(整数类型)

      • ItemIcon(纹理类型,可选)

  2. 编译并保存结构体。

步骤二:创建背包数组变量

  1. 新建一个Actor蓝图游戏实例蓝图,命名为 BP_InventorySystem

  2. 在 我的蓝图 面板中,点击 + 新建变量:

    • 变量名:InventoryArray

    • 变量类型:选择 结构体 → F_ItemData

    • 在细节面板中,将 容器类型 设置为 数组

  3. 编译蓝图,然后在 默认值 面板中点击 添加元素,为背包添加一些示例物品(如:药水、武器、护甲等)

步骤三:添加物品到背包(准备工作)

  1. 在事件图表中,创建一个自定义事件命名为 AddItem

  2. 添加一个输入参数:NewItem(类型为 F_ItemData

  3. 拖出 InventoryArray 变量,使用 ADD 节点将 NewItem 添加到数组末尾

步骤四:使用 Remove Item 节点删除物品

这是核心操作步骤:

  1. 创建一个自定义事件命名为 RemoveItemByValue

  2. 添加一个输入参数:ItemToRemove(类型为 F_ItemData

  3. 在事件图表中按以下方式连接节点:

    text
    [RemoveItemByValue] → [Remove Item] → [Branch]
                               ↓
                         InventoryArray
                               ↓
                         ItemToRemove

    具体操作:

    • 从事件节点拖出执行线

    • 搜索并放置 Remove Item 节点

    • 将 InventoryArray 变量拖入图表,连接到 Remove Item 的 Target Array 引脚

    • 将 ItemToRemove 参数连接到 Remove Item 的 Item 引脚

    • 从 Remove Item 的 Return Value 引脚拖出,放置 Branch(分支) 节点

  4. 处理返回值

    • 如果返回 True:表示物品已成功移除,可以触发后续逻辑(如播放音效、更新UI等)

    • 如果返回 False:表示数组中不存在该物品,可以显示提示信息

步骤五:完整蓝图逻辑示例

text
[事件 BeginPlay] 
    → [AddItem](添加药水)
    → [AddItem](添加武器)
    → [AddItem](添加药水)  // 数组中现在有两瓶药水

[某个触发事件(如按键盘1键)]
    → [RemoveItemByValue](ItemToRemove = 药水)
        → [Remove Item](从数组中移除所有"药水")
            → [Branch]
                ├─ True → [Print String]("药水已移除!")
                └─ False → [Print String]("背包中没有药水!")

步骤六:测试验证

  1. 将 BP_InventorySystem 拖入关卡

  2. 点击 运行(PIE)

  3. 触发移除事件,观察:

    • 控制台是否输出正确的提示信息

    • 数组中所有匹配的元素是否都被移除


Remove Item vs Remove Index 的区别

对比项 Remove Item Remove Index
删除依据 根据元素的值匹配删除 根据索引编号删除
删除范围 删除所有匹配的元素 只删除指定索引的一个元素
适用场景 不知道元素位置,只知道要删什么 知道元素在数组中的精确位置

重要提示Remove Item 会删除数组中所有与指定值匹配的元素,而不仅仅是第一个。如果数组中包含重复元素,所有匹配项都会被移除。


注意事项

  1. 数组遍历中删除:在 ForEachLoop 遍历数组的过程中直接使用 Remove Item 可能会导致索引错乱和遗漏元素。如需在遍历中删除,建议使用反向遍历Reverse ForEachLoop

  2. 引用类型 vs 值类型:对于结构体等值类型,Remove Item 通过值相等性来匹配;对于对象引用,则通过引用相等性来匹配

  3. 返回值判断:建议始终检查 Return Value,以便根据删除是否成功执行不同的逻辑分支

  4. 性能考虑Remove Item 需要遍历整个数组来查找匹配项,对于大型数组频繁操作时需注意性能影响

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

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

昵称

取消
昵称表情代码图片

    暂无评论内容