文档:物品系统

whiteviera2025-10-01

物品系统的要求

  • 能够从JSON导入静态物品数据(手动导入)
  • 能够从静态物品数据生成包含【等级、稀有度】运行时数据的物品实例
  • 能够统一注册和管理所有在世界中生成的物品实例(对象池?)
  • 能够以物品容器组件的形式在世界中生成(如:内含多个物品实例的奖励箱,【内含一个枪械物品实例的、枪械形状的】物品容器,【内含一个物品实例、外观是默认物品容器形状的】掉落物品)
  • 物品容器组件能够支持物品实例的存入(背包系统、储藏处)与取出(奖励箱)

物品静态数据(UItemStaticDataBase,继承自UPrimaryDataAsset)

  • 物品ID(FName
  • 物品类别(GameplayTag
  • 物品信息
    • 物品名称FText
    • 物品描述FText
  • 是否可在世界中放置?
  • 是否可堆叠?
  • 类别特定资源(对不同物品类型派生出不同的子类,存储在子类里)
    • 缩略图
    • 剪影图
    • 模型
    • 动画集
    • 数值(float)
    • ...

所有物品静态数据都以FPrimaryAssetId("ItemStaticData", ItemID)的方式注册到AssetManager中。

物品运行时对象 (UItemObject,对不同类型的物品派生出不同的子类)

  • 物品实例ID(FGuid)
  • 物品静态数据
  • 物品等级(int32
  • 物品稀有度(EItemRarity
  • 物品堆叠数量(int32
  • ...

物品交互接口(IItemInteractable)

  • 提供物品“使用”的功能(如【消耗品-将效果应用于使用者】,【武器-将对应的武器装备于使用者的活跃武器栏位】,【】)

物品子系统(UGameInventorySubsystem)

  • 管理所有的物品静态数据
  • 提供物品静态数据的查找
  • 提供物品运行时对象的创建和初始化

物品容器组件(UItemContainerComponent)

  • 内容物(TArray<UItem*>
  • 加入 / 删除物品的接口
  • 实现交互接口

物品容器Actor(AItemContainerActor)

  • ???
Last Updated 2025/10/5 19:33:36