3.4 KiB
3.4 KiB
BP_Bomb
基本信息
- 类型: Blueprint (Actor)
- 父类: Actor
- 源文件: /Game/Blueprints/Playground/BP_Bomb.BP_Bomb
- 模块: Content
功能概述
BP_Bomb 是物品系统和追踪器系统的交互核心示例 Actor。它结合了 IItemContainer(物品容器接口)、UItemTracer(物品追踪器)和 Owner 检测,演示了物品在 Actor 之间的完整生命周期:创建、追踪、转移和响应。
设计用意
BP_Bomb 是最复杂的蓝图示例,演示了物品系统的全部核心功能。它通过 ItemContainer 持有炸弹物品的容器,通过 ItemLocation(UItemTracer)追踪炸弹物品的位置变化,通过 Item ID(GUID)实现跨容器追踪。追踪器绑定 OnItemMoved 委托,当检测到炸弹转移到其他容器时触发相应的业务逻辑(如爆炸)。GetContainer() 和 FindActorInOuterChain 函数则演示了 C++/蓝图桥接模式——在蓝图层面实现等同于 C++ UItemTracer 的查找逻辑。
职责范围
BP_Bomb 负责演示物品+追踪器的完整交互流程,包括物品创建、容器查找、追踪器委托绑定、以及物品转移响应。底层容器存储实现由 UDefaultContainer 处理,BP_Bomb 专注于物品生命周期管理的示例代码。
项目内依赖
| 依赖项 | 关系 | 源文件 |
|---|---|---|
| IItemContainer | 持有 (ItemContainer) | Item 插件 |
| UItemTracer | 持有 (ItemLocation) | Item 插件 |
对外接口
- 蓝图函数:
GetContainer() -> TScriptInterface<IItemContainer>-- 返回本 Actor 持有的物品容器接口,用于外部获取容器的物品操作能力FindActorInOuterChain(UObject* Obj) -> AActor*-- 在给定对象的 Outer 链中查找第一个 AActor,蓝图版本的 Outer 遍历(等同于 C++ UItemTracer::FindActorInOuterChain 的蓝图实现)
- 蓝图变量(均为 is_instance_editable):
ItemContainer(TScriptInterface) -- 物品容器接口引用,提供 CreateItem、MoveItem、GetItemViews 等所有物品操作Current Owner(UObject*) -- 当前持有者对象引用,用于追踪物品在哪个 Actor 身上ItemLocation(UItemTracer*) -- 物品追踪器引用,持有OnItemMoved委托(FOnItemMoved),用于监听物品位置变化Item ID(FGuid) -- 追踪的物品 ID,用于跨容器识别和追踪物品
- EventGraph:含 5 个事件和 44 个节点,处理物品生命周期演示逻辑
使用方法
- 作为示例 Actor 放置到关卡中,演示物品系统的完整使用流程
- 在蓝图编辑器中配置:创建 UDefaultContainer 作为
ItemContainer,通过 CreateItem 创建炸弹物品并记录Item ID - 创建 UItemTracer 实例并赋值给
ItemLocation,绑定OnItemMoved委托监听物品位置变化 GetContainer()用于外部获取容器的物品操作接口FindActorInOuterChain()用于通过物品容器对象的 Outer 链查找实际持有该物品的 Actor- 当
ItemLocation.OnItemMoved触发时(物品转移到其他容器),通过FindActorInOuterChain检测新持有者,并触发相应的业务逻辑(如爆炸) - 实现物品系统的完整交互演示:创建 -> 追踪 -> 转移检测 -> 响应
用例
- 物品系统演示 Actor,展示 IItemContainer + UItemTracer 的完整交互流程
- 放置于关卡中作为示例,演示物品创建、转移追踪、所有者检测等核心功能