4.0 KiB
4.0 KiB
BP_Bomb
基本信息
- 类型: Blueprint (Actor)
- 父类: Actor
- 源文件: /Game/Blueprints/Playground/BP_Bomb.BP_Bomb
- 模块: Content/Blueprints/Playground
功能概述
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 插件 |
外部视角
BP_Bomb 是 Actor 的子类,从外部调用者视角:
公开属性(蓝图可读写)
ItemContainer(IItemContainer 接口引用)— 持有的物品容器Current Owner(Object*)— 当前拥有者ItemLocation(UItemTracer*)— 物品位置追踪器Item ID(Guid)— 追踪的物品 GUID
自定义函数
GetContainer()→IItemContainer— 获取当前持有的容器接口FindActorInOuterChain(Object*)→Actor*— 沿 Outer 链向上查找 Actor
外部交互方式
- 放置在 Playground 关卡中作为可交互对象
- 演示物品系统核心流程:创建 → 追踪 → 转移 → 响应
- 通过 ItemLocation(UItemTracer)绑定 OnItemMoved 委托,检测物品跨容器转移
EventGraph 事件
| 事件 | 类型 | 触发时机 | 行为 |
|---|---|---|---|
事件开始运行 |
原生覆盖 (BeginPlay) | Actor 生成时由引擎自动触发 | 通过 GetContainer 获取容器 → CreateItem 创建炸弹物品 → GetItemProperty 获取 ItemTracer → 存入 ItemLocation → 存入 ItemID |
事件Actor开始重叠 |
原生覆盖 (OnActorBeginOverlap) | 其他 Actor 进入重叠区域 | 预留(当前无连线逻辑) |
事件Tick |
原生覆盖 | 每帧 | Switch Has Authority → 服务器端逻辑处理 |
On Component Hit (Sphere) |
组件绑定事件 | 球形碰撞体被击中时 | Switch Has Authority → 验证 ItemLocation 有效 → 按类获取 BP_InventoryComp → RequestMoveItem 请求物品移动 |
事件RequestMoveItem |
接口事件 (来自 Inventory 系统) | Inventory 系统请求移动物品时 | 通过 GetContainer 获取容器 → ReceiveItem 接收物品 |
使用方法
BP_Bomb 在项目中的典型调用流程:
- 炸弹初始化流程 — BeginPlay → GetContainer → CreateItem(TestBomb)→ GetItemProperty(获取 ItemTracer)→ 存入 ItemLocation 和 ItemID → 追踪器绑定委托
- 物品移动触发流程 — 玩家拾取炸弹 → 炸弹被移出容器 → On Component Hit → 验证 ItemLocation → 获取目标 BP_InventoryComp → RequestMoveItem → 接口事件触发 → ReceiveItem 接收物品到新容器
- 追踪器响应流程 — ItemLocation(UItemTracer)检测到物品移动 → 触发 OnItemMoved 委托 → 执行爆炸/响应逻辑
用例
| 引用方 | 路径 | 用途 |
|---|---|---|
| Playground | /Game/地图关卡/Playground |
关卡中放置的交互示例,演示物品系统全流程 |