# 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` -- 返回本 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 的完整交互流程 - 放置于关卡中作为示例,演示物品创建、转移追踪、所有者检测等核心功能