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

3.4 KiB
Raw Blame History

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