
道具系统

Updated: Apr 16, 2025
道具定义
基本概念
道具定义是一个数据资产,创建一个新道具定义等同于新建一个类型为道具定义(GIS_ItemDefinition)的资产。
道具定义本质是静态数据,可添加道具数据片段、以实现复杂的数据结构。
它的主要作用是定义一系列与道具相关的静态数据,它是保存在硬盘中的,因此在网络游戏中,也能很容易的进行网络复制。
道具数据片段
道具数据片段是附加到道具定义上的一系列数据。
这一部分是受到了Lyra的启发,将不同的数据片段(ItemFragement)进行组合,即可构建出满足各种需求的复杂道具数据结构。
默认数据片段
获取数据片段
拓展新数据
一般有两种方式可以为道具添加新的数据类型。
数据片段方式
即组合方式,你构建不同的数据片段,将其组合到道具定义。这是最推荐的方式。
通过蓝图/C++你可以继承GIS_ItemFragement类并派生出一个新的Fragement类型,添加你需要新增的变量,确保它们是公开可编辑的。
然后在你的道具定义中,就可以选择新的数据片段了。
拓展道具定义类
即继承方式,你通过蓝图/C++继承GIS_ItemDefinition类并派生出一个新的道具定义类型,添加你需要新增的变量。
在新建数据资产时,你就可以选择这个新的道具定义类作为数据资产的类型了。
道具实例
一个道具定义可以在游戏进行时产生多个道具实例。实例可以被创建、销毁、或者保存。
通过一个道具实例,可以获取其定义。道具实例也可以在游戏进行时产生数据变化(比如强化,数值变更)。
实例的创建销毁
一般来说你不需要了解此部分,因为道具实例的创建和销毁一般已经由库存系统处理了,除非你要做一些更底层的事情。
GIS包含一个InventorySubsystem,负责在底层根据道具定义创建/复制道具实例。