用途:指导在 Unity 6+ 中实现完整的存档与持久化系统,包括游戏状态序列化、文件持久化(原子写入)、存档数据版本管理、多存档槽、自动存档、UGS 云存档以及可选加密,覆盖从简单 PlayerPrefs 到本地/云端混合架构。
主要能力:提供序列化格式选择(JsonUtility、Newtonsoft.Json、MemoryPack、MessagePack)的对比与建议;定义 ISaveable 接口与 SaveData(含 version 字段、Dictionary、metadata);实现 SaveManager(注册表、SaveAsync/LoadAsync、原子写入 .tmp→.save 并保留 .bak);自动存档(脏标记、可配置计时器、OnApplicationPause 与场景切换触发);测试存档/读取循环、损坏回退与版本迁移;故障排查表(文件缺失、数据丢失、序列化异常、存档损坏、权限异常、PlayerPrefs 丢失、存档过大、云本地不同步)。
使用方式:先选择序列化格式,为需保存的组件实现 ISaveable,实现 SaveManager 并使用 Application.persistentDataPath 下的 saves 目录,接入自动存档,最后用 EditMode 测试验证。路径示例:Path.Combine(Application.persistentDataPath, "saves", slotName + ".save")。
适用场景:Unity 6+ 项目的单槽或多槽存档、移动端自动存档、云同步、防作弊加密需求。
限制与规则:必须使用原子写入、版本化 SaveData、persistentDataPath、OnApplicationPause(true) 保存、POCO 序列化并处理首次无存档情况;禁止使用 BinaryFormatter、禁止保存 MonoBehaviour/GameObject/ScriptableObject 引用、禁止主线程同步保存大于 100 KB 文件、禁止先删旧文件、禁止忽略 I/O 异常。前置条件:Unity 6.0+(Awaitable API),推荐 Newtonsoft.Json(com.unity.nuget.newtonsoft-json),简单场景无强制依赖。