2.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.3 KiB
		
	
	
	
	
	
	
	
title, date, excerpt, tags, rating
| title | date | excerpt | tags | rating | |
|---|---|---|---|---|---|
| Inventory & Synthesis文档 | 2022-08-12 14:18:31 | 
  | 
⭐ | 
目录
Inventory
使用Lyra的 Entry - Instance - Definition - Fragment结构以及FFastArraySerializer/FFastArraySerializerItem网络同步结构。并针对一些设计做出改动。可以参考:https://zhuanlan.zhihu.com/p/552480961
数据结构
- URPGInventoryComponent
- FRPGItemList & FRPGItemEntry:解决网络同步问题用结构。其中
FRPGItemEntry存储StackNum(堆叠数量)信息。- URPGItemInstance:物品实例以及存储动态数据。
- URPGItemDefinition:物品定义以及存储静态数据。
TObjectPtr<URPGItemTypeFragment>:类型FragmentTArray<TObjectPtr<URPGItemFragment>>:物品其他信息Fragment
 
 - URPGItemDefinition:物品定义以及存储静态数据。
 
 - URPGItemInstance:物品实例以及存储动态数据。
 
 - FRPGItemList & FRPGItemEntry:解决网络同步问题用结构。其中
 
主要的物品操作逻辑位于URPGInventoryComponent。
物品类型
记录物品类型以及类型对应的行为 & 动作。存储于URPGItemDefinition中的TObjectPtr<URPGItemTypeFragment> ItemTypeFragments,可在构建URPGItemDefinition资产时挂载对应的URPGItemTypeFragment。Fragment逻辑位于Inventory/Item/RPGItemTypeFragment.h & cpp中。
- CanBeUse:消耗品或者可以被使用的物品。
 - Weapon:武器。可以附带词条以及镶嵌物。
 - Equip:装备。可以附带词条以及镶嵌物。
 - Material:材料。用于合成各种东西的材料;或者为卖钱道具。
 - Token:凭证。钥匙、信物;各种钱。
 - Attachable:镶嵌物。宝石、附魔之类东西。
 - Formulas:已经学会的配方。
 
如何添加一个物品
相关物品定义位于Items目录下。
- 新建一个父类为RPGItemDefinition的蓝图类。前缀为ID_XXXX。
 - 按照物品类型选择ItemTypeFragments,并且填入相关信息即可。
 
PS. Formulas类除了定义物品信息之外还需要定义父类为RPGSynthesisDefinition的配方类,明明方式为ID_XXXX_SD。
Synthesis
合成逻辑也位于URPGInventoryComponent,主要函数为:
- SynthesisItem():合成物品。
 - SynthesisItems():合成N个物品。
 - ConsumeItemsByDefinition():消耗物品。
 - GetSynthesisNums():计算可以可成的物品数量。
 - GetSynthesisNumsByDefinition():计算可以可成的物品数量。