3.0 KiB
3.0 KiB
BP_DefaultContainer
基本信息
- 类型: Blueprint (UObject)
- 父类: UDefaultContainer
- 源文件: /Game/Blueprints/Playground/BP_DefaultContainer.BP_DefaultContainer
- 模块: Content
功能概述
BP_DefaultContainer 是 UDefaultContainer 的蓝图子类,作为物品系统的默认容器在蓝图层中使用。无额外自定义变量,直接使用 C++ 父类的完整 IItemContainer 实现,提供 CreateItem、GetItemViews、MoveItem 等物品操作接口。
设计用意
UDefaultContainer 是 C++ 中 IItemContainer 的默认实现,但不方便在编辑器中直接引用。BP_DefaultContainer 提供了一个蓝图可引用、可放置的资产版本,使得其他蓝图(如 BP_InventoryComp)可以通过编辑器直接引用它作为物品存储容器,简化了工作流。
职责范围
BP_DefaultContainer 作为物品容器的蓝图实例化版本,负责在编辑器中作为可引用的资产存在。底层的物品存储机制、IItemContainer 接口实现全部由 C++ 父类 UDefaultContainer 处理。
项目内依赖
| 依赖项 | 关系 | 源文件 |
|---|---|---|
| UDefaultContainer | 父类 | Item 插件 |
| IItemContainer | 间接实现 | Item 插件 |
对外接口
- 继承自 UDefaultContainer(即 IItemContainer 接口)的全部 BlueprintCallable 函数:
GetItemViews() const -> TArray<FItemView>-- 返回容器中所有物品视图列表GetItemViewByID(const FGuid& ItemID) const -> FItemView-- 按物品 ID 获取单个物品视图GetItemCount() const -> int32-- 返回当前容器中的物品数量MoveItem(const FGuid& ItemID, const TScriptInterface<IItemContainer>& TargetContainer) -> bool-- 将物品移动到目标容器(BlueprintAuthorityOnly)CreateItem(FName ItemType, TArray<FGuid>& NewItemIDs, int32 Count=1) -> bool-- 按 ItemType 创建物品(BlueprintAuthorityOnly)GetItemProperty(FGuid ItemID, FName PropertyName, int32& Value) -> bool-- 读取物品动态属性(CustomThunk,属性类型自动匹配)SetItemProperty(FGuid ItemID, FName PropertyName, int32 Value)-- 写入物品动态属性(CustomThunk)
- 无自定义蓝图变量或函数(MCP: variables=[], functions=[]):纯父类能力透传,所有接口由 UDefaultContainer C++ 层实现
使用方法
- 作为 UObject 资产创建并保存在 /Game/Blueprints/Playground/ 路径下
- 被 BP_InventoryComp 的
DefaultContainer变量引用,作为物品的实际存储容器 - 通过 IItemContainer 接口的所有 BlueprintCallable 函数进行物品操作
- 实际存储逻辑由 C++ 父类 UDefaultContainer 的
TArray<TUniquePtr<FItemInstance>> Items处理 - BP_DefaultContainer 存在的意义是提供一个蓝图可引用的资产版本,方便在编辑器中直接拖拽配置
- 无需在蓝图层面编写任何逻辑(functions=[]),完全依赖父类实现
用例
- BP_InventoryComp 的
DefaultContainer变量默认值,作为库存组件的底层存储 - 任何需要 IItemContainer 接口的地方均可引用此资产