This commit is contained in:
meishibiezb
2026-06-04 21:37:53 +08:00
parent b0d2a0e2e7
commit 29a3f77908
63 changed files with 4068 additions and 1 deletions

View File

@@ -0,0 +1,63 @@
# 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**
```cpp
// 添加 Tracer 属性
Instance->ItemData.AddProperty(UInternalItemProperty::ItemTracer(),
EPropertyBagPropertyType::Object, UItemTracer::StaticClass());
// 设置 Tracer 值
Instance->ItemData.SetValueObject(
UInternalItemProperty::ItemTracer(), NewTracer);
```
**在 InjectPayload 中使用ItemContainer.cpp:49**
```cpp
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 属性描述。