Lyra - 库存与装备系统
Equipment
Equipment 是 Lyra 的装备系统,也就是执行装备这个过程逻辑的一个系统
它通过 ULyraEquipmentDefinition 这个类,来获得装备的Actor真正的实例,以及装备上会获得什么技能,还有装备到哪里,比如枪装备到人的一个左手骨骼点上
ULyraEquipmentDefinition
此类就是装备的一个数据结构,你需要提供一个Instance,还有一个装备上会有什么技能,比如装备一个剑,装备上了就会有一把剑的剑光技能,以及还有装备到人身上那个部位,比如剑装备到骨骼体上
ULyraEquipmentInstance
此类就是装备的一个实例,比如武器就有枪和剑两种,枪是有根据距离,散射程度来进行伤害衰减的,所以就可以继承此基类,去实现,Lyra也就是这么做的,装备以后就可以从各种各样的枪上面拿到伤害数据
ULyraEquipmentManagerComponent
此Component就是所有的装备到身上的一个管理者了,也是向外部提供各种CURD的接口
Lyra里会在Gamefeature里将这个绑定在Character上
ULyraQuickBarComponent
此Component就是游戏中的装备栏,可以通过此Component的方法快捷装备到人物身上
Lyra里会在Gamefeature里将这个绑定在PlayerState上
Inventory
Inventory 是Lyra的库存系统,也可以理解为背包系统,然后管理着一个Actor身上所有的物品
它通过 ULyraInventoryItemFragment 的各种子类,来获得相对应的数据,比如 ULyraEquipmentDefinition
ULyraInventoryItemDefinition
这个就是库存系统中库存的数据了,他的成员就是一个显示名称,以及还有基类,比如UInventoryFragment_EquippableItem就是继承于这个基类,随后UInventoryFragment_EquippableItem只需要绑定一个装备系统的数据结构体-ULyraEquipmentDefinition, 这样就可以将库存系统与装备系统串起来了
- 核心职责:
- 定义物品的显示信息,如名称、图标。
- 通过一个Fragment(碎片)列表来组合物品的功能。一个物品可以由多个Fragment构成,例如:
- UInventoryFragment_EquippableItem: 表明这是一个可装备的物品。这个Fragment内部持有一个对 ULyraEquipmentDefinition 的引用,这正是将库存系统与装备系统串联起来的关键桥梁
- UInventoryFragment_SetStats: 表明这个物品会提供一些基础属性(比如作为合成材料)。
- 与ULyraEquipmentDefinition的区别: ULyraInventoryItemDefinition 描述的是“背包里的物品是什么”,而 ULyraEquipmentDefinition 描述的是“这个物品装备后会发生什么”。
ULyraInventoryItemInstance
这个类就是库存的实例,他的主要职责就是存储这个实例相对应的数据-ULyraInventoryItemDefinition,以及还有一个自定义的 GameplayTagStackContainer,这个Tag的作用就是,Unreal原生提供的只能表示一个Tag,自定义的多了一个等级,比如这个库存的1级和2级效果不一致,这个时候加入一个等级概念就很好区分
ULyraInventoryManagerComponent
这个Component就是库存的管理者了,它的作用就是管理全部的库存,并且对外提供各种CURD的方法
Lyra里会在Gamefeature里将这个绑定在PlayerState上