47 lines
3.4 KiB
Markdown
47 lines
3.4 KiB
Markdown
# 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<IItemContainer>) -- 物品容器接口引用,提供 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 的完整交互流程
|
||
- 放置于关卡中作为示例,演示物品创建、转移追踪、所有者检测等核心功能
|