跳转到正文

保存&&加载系统

了解 GIS 库存记录的序列化、恢复和工厂扩展,以及货币、Fragment 状态和项目存档的边界。

创建时间: 2025年7月18日更新时间: 2026年10月27日

概述

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的底层操作。

同时你需要在项目设置->库存系统设置中,指定你的库存工厂类。

提示

通常情况下,你不需要自定义。

文字流程与边界

  1. 通过 GIS_InventorySubsystem::SerializeInventory 将库存转换为 FGIS_InventoryRecord;子系统使用可配置的 GIS_InventoryFactory 执行底层工作。
  2. 项目负责把记录写入 SaveGame、文件或数据库,并管理存档版本、读取失败与迁移。恢复时在权威端对尚未初始化的库存组件调用 InitializeInventorySystemWithRecord,该入口内部调用 DeserializeInventory 并完成初始化;按项目时序测试集合、物品和 UI 事件。
  3. FGIS_CurrencyRecord 是单独的货币记录;不要假设 InventoryRecord 自动包含货币。Fragment 状态的保存还受可序列化目标和 SaveGame 字段限制,见数据混入系统。
  4. 在项目设置中通过 UGIS_DeveloperSettings 配置 InventoryFactoryClass。配套项目的 BC_GIS_Demo_SaveManager、BC_GIS_Demo_Saver 和 B_GIS_Demo_SaveGame 可作参考;请测试退出重进、缺失资产及版本升级。