Remove Item 节点概述
Remove Item 是虚幻引擎5蓝图中的数组操作节点,属于 Utilities | Array 类别。它的核心功能是:从数组中移除所有与指定值匹配的元素实例。
节点输入
| 引脚 | 类型 | 说明 |
|---|---|---|
Target Array |
通配符数组 | 要进行移除操作的数组 |
Item |
通配符 | 要从数组中移除的元素值 |
节点输出
| 引脚 | 类型 | 说明 |
|---|---|---|
Return Value |
Boolean | 成功移除一个或多个元素时返回 True,否则返回 False |
完整使用案例:背包物品移除系统
以下是一个在虚幻引擎5中从背包数组移除指定物品的完整操作步骤。
步骤一:创建数据结构
-
新建结构体(Struct)
-
在内容浏览器中右键 → 蓝图 → 结构体(Structure)
-
命名为
F_ItemData -
添加以下变量:
-
ItemName(文本类型) -
ItemID(整数类型) -
ItemIcon(纹理类型,可选)
-
-
-
编译并保存结构体。
步骤二:创建背包数组变量
-
新建一个Actor蓝图或游戏实例蓝图,命名为
BP_InventorySystem -
在 我的蓝图 面板中,点击 + 新建变量:
-
变量名:
InventoryArray -
变量类型:选择 结构体 →
F_ItemData -
在细节面板中,将 容器类型 设置为 数组
-
-
编译蓝图,然后在 默认值 面板中点击 添加元素,为背包添加一些示例物品(如:药水、武器、护甲等)
步骤三:添加物品到背包(准备工作)
-
在事件图表中,创建一个自定义事件命名为
AddItem -
添加一个输入参数:
NewItem(类型为F_ItemData) -
拖出
InventoryArray变量,使用 ADD 节点将NewItem添加到数组末尾
步骤四:使用 Remove Item 节点删除物品
这是核心操作步骤:
-
创建一个自定义事件命名为
RemoveItemByValue -
添加一个输入参数:
ItemToRemove(类型为F_ItemData) -
在事件图表中按以下方式连接节点:
[RemoveItemByValue] → [Remove Item] → [Branch] ↓ InventoryArray ↓ ItemToRemove具体操作:
-
从事件节点拖出执行线
-
搜索并放置 Remove Item 节点
-
将
InventoryArray变量拖入图表,连接到Remove Item的Target Array引脚 -
将
ItemToRemove参数连接到Remove Item的Item引脚 -
从
Remove Item的Return Value引脚拖出,放置 Branch(分支) 节点
-
-
处理返回值:
-
如果返回
True:表示物品已成功移除,可以触发后续逻辑(如播放音效、更新UI等) -
如果返回
False:表示数组中不存在该物品,可以显示提示信息
-
步骤五:完整蓝图逻辑示例
[事件 BeginPlay]
→ [AddItem](添加药水)
→ [AddItem](添加武器)
→ [AddItem](添加药水) // 数组中现在有两瓶药水
[某个触发事件(如按键盘1键)]
→ [RemoveItemByValue](ItemToRemove = 药水)
→ [Remove Item](从数组中移除所有"药水")
→ [Branch]
├─ True → [Print String]("药水已移除!")
└─ False → [Print String]("背包中没有药水!")
步骤六:测试验证
-
将
BP_InventorySystem拖入关卡 -
点击 运行(PIE)
-
触发移除事件,观察:
-
控制台是否输出正确的提示信息
-
数组中所有匹配的元素是否都被移除
-
Remove Item vs Remove Index 的区别
| 对比项 | Remove Item | Remove Index |
|---|---|---|
| 删除依据 | 根据元素的值匹配删除 | 根据索引编号删除 |
| 删除范围 | 删除所有匹配的元素 | 只删除指定索引的一个元素 |
| 适用场景 | 不知道元素位置,只知道要删什么 | 知道元素在数组中的精确位置 |
重要提示:
Remove Item会删除数组中所有与指定值匹配的元素,而不仅仅是第一个。如果数组中包含重复元素,所有匹配项都会被移除。
注意事项
-
数组遍历中删除:在
ForEachLoop遍历数组的过程中直接使用Remove Item可能会导致索引错乱和遗漏元素。如需在遍历中删除,建议使用反向遍历(Reverse ForEachLoop) -
引用类型 vs 值类型:对于结构体等值类型,
Remove Item通过值相等性来匹配;对于对象引用,则通过引用相等性来匹配 -
返回值判断:建议始终检查
Return Value,以便根据删除是否成功执行不同的逻辑分支 -
性能考虑:
Remove Item需要遍历整个数组来查找匹配项,对于大型数组频繁操作时需注意性能影响
感谢您的来访,获取更多精彩文章请收藏本站。







暂无评论内容