3.1 KiB
3.1 KiB
UInternalItemProperty
基本信息
- 类型: UCLASS (BlueprintFunctionLibrary)
- 父类: UBlueprintFunctionLibrary
- 源文件: Plugins/Item/Source/Item/Public/ItemFactory.h
- 模块: Item
功能概述
静态函数库,提供单一常量:FName "Internal_ItemTracer"。用作属性包中UItemTracer对象的键。同时在C++和Blueprint中可用。
设计用意
集中的键注册表模式。防止硬编码字符串在代码库中出现漂移。被ItemFactory::CreateItemInstance和IItemContainer::InjectPayload引用。
职责范围
提供物品Tracer的标准属性包键。单一职责 - 名称常量。
项目内依赖
(无项目内依赖)
对外接口
UInternalItemProperty 是 BlueprintFunctionLibrary,对外仅提供一个静态方法:
- ItemTracer() (BlueprintPure, Category = "Constants|Names") → FName: 返回常量 FName("Internal_ItemTracer")。这是物品属性包中 UItemTracer 对象的键名。
此方法在 Blueprint 和 C++ 中均可调用。其设计目的是集中管理内部键名,避免字符串散落在代码各处。
调用方视角: 调用方通常不需要直接使用此类。它被 ItemFactory 和 IItemContainer::InjectPayload 内部使用:
- 创建时:ItemFactory::CreateItemInstance 使用此键向 ItemData 添加 UItemTracer 属性(ItemFactory.cpp:19,21)。
- 注入时:IItemContainer::InjectPayload 使用此键查找 Tracer 并更新其位置(ItemContainer.cpp:49)。
使用方法
UInternalItemProperty 是一个集中管理的键名注册表。调用方通常在需要访问物品属性包中的 Tracer 时使用。
在 C++ 中使用(ItemFactory.cpp:19,21):
// 添加 Tracer 属性
Instance->ItemData.AddProperty(UInternalItemProperty::ItemTracer(),
EPropertyBagPropertyType::Object, UItemTracer::StaticClass());
// 设置 Tracer 值
Instance->ItemData.SetValueObject(
UInternalItemProperty::ItemTracer(), NewTracer);
在 InjectPayload 中使用(ItemContainer.cpp:49):
const FName PropName = UInternalItemProperty::ItemTracer();
if (const FPropertyBagPropertyDesc* Desc =
Payload->ItemData.FindPropertyDescByName(PropName))
{
// ... 获取 Tracer 并更新位置
}
在 Blueprint 中使用: 作为 BlueprintFunctionLibrary 的 BlueprintPure 函数,在 Blueprint 中可以直接调用 ItemTracer() 节点获取 FName 常量,用于从物品的属性包中查找 Tracer 对象。
用例
Plugins/Item/Source/Item/Public/ItemFactory.h:13-24-- UInternalItemProperty 类定义,ItemTracer() 返回 static const FName("Internal_ItemTracer")。Plugins/Item/Source/Item/Private/ItemFactory.cpp:19-- CreateItemInstance 调用 UInternalItemProperty::ItemTracer() 作为键名向属性包添加 Object 类型属性。Plugins/Item/Source/Item/Private/ItemFactory.cpp:21-- CreateItemInstance 调用 UInternalItemProperty::ItemTracer() 作为键名向属性包设置 Tracer 对象值。Plugins/Item/Source/Item/Private/ItemContainer.cpp:49-- InjectPayload NVI 调用 UInternalItemProperty::ItemTracer() 作为键名从属性包查找 Tracer 属性描述。