概述
GIS(通用库存系统)通过库存子系统提供完全的序列化支持,同时也支持通过库存工厂来完全自定义其底层逻辑。
库存子系统
GIS通过GIS_InventorySubsystem提供完全的API,用于创建/复制道具实例,集合,以及保存/加载库存,道具集合,以及道具实例。
Loading Blueprint
Initializing BlueprintUE renderer...
保存加载案例
GIS提供完全的序列化API,以帮助你轻松地与任意其它专用的存档系统进行集成。
你仅需要关心,如何将InventoryRecord(库存的存档记录)保存到硬盘/数据库,并将其取回,然后用InventoryRecord来初始化库存系统。
在GIS的配套项目的Demo中,我也是实现了简单的存档管理器,以帮助你理解序列化API的用法。
库存工厂
GIS_InventorySubsystem提供的API本质是对GIS_InventoryFactory的包装。
你可以通过蓝图/C++继承自GIS_InventoryFactory以完全自定义GIS的底层操作。
同时你需要在项目设置->库存系统设置中,指定你的库存工厂类。
提示
通常情况下,你不需要自定义。
文字流程与边界
- 通过
GIS_InventorySubsystem::SerializeInventory将库存转换为FGIS_InventoryRecord;子系统使用可配置的GIS_InventoryFactory执行底层工作。 - 项目负责把记录写入 SaveGame、文件或数据库,并管理存档版本、读取失败与迁移。恢复时在权威端对尚未初始化的库存组件调用
InitializeInventorySystemWithRecord,该入口内部调用DeserializeInventory并完成初始化;按项目时序测试集合、物品和 UI 事件。 FGIS_CurrencyRecord是单独的货币记录;不要假设 InventoryRecord 自动包含货币。Fragment 状态的保存还受可序列化目标和 SaveGame 字段限制,见数据混入系统。- 在项目设置中通过
UGIS_DeveloperSettings配置InventoryFactoryClass。配套项目的BC_GIS_Demo_SaveManager、BC_GIS_Demo_Saver和B_GIS_Demo_SaveGame可作参考;请测试退出重进、缺失资产及版本升级。