This commit is contained in:
meishibiezb
2026-06-04 21:37:53 +08:00
parent b0d2a0e2e7
commit 29a3f77908
63 changed files with 4068 additions and 1 deletions

View File

@@ -0,0 +1,46 @@
# BP_Bomb
## 基本信息
- **类型**: Blueprint (Actor)
- **父类**: Actor
- **源文件**: /Game/Blueprints/Playground/BP_Bomb.BP_Bomb
- **模块**: Content
## 功能概述
BP_Bomb 是物品系统和追踪器系统的交互核心示例 Actor。它结合了 IItemContainer物品容器接口、UItemTracer物品追踪器和 Owner 检测,演示了物品在 Actor 之间的完整生命周期:创建、追踪、转移和响应。
## 设计用意
BP_Bomb 是最复杂的蓝图示例,演示了物品系统的全部核心功能。它通过 ItemContainer 持有炸弹物品的容器,通过 ItemLocationUItemTracer追踪炸弹物品的位置变化通过 Item IDGUID实现跨容器追踪。追踪器绑定 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 的完整交互流程
- 放置于关卡中作为示例,演示物品创建、转移追踪、所有者检测等核心功能