Files
loneseDocument/Content/Blueprints/BP_Bomb.md
meishibiezb 29a3f77908 init
2026-06-04 21:44:13 +08:00

47 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 的完整交互流程
- 放置于关卡中作为示例,演示物品创建、转移追踪、所有者检测等核心功能