feat: 更新存档管理,添加异步存档槽管理功能,优化存档验证逻辑

This commit is contained in:
2026-05-20 16:18:35 +08:00
parent 8c66640a6d
commit acb36d750f
7 changed files with 60 additions and 16 deletions

View File

@@ -8,8 +8,8 @@ namespace BaseGames.World
/// 挂载位置Persistent 场景的根 GameObject与 GameServiceRegistrar 同级)。
/// 需在 Inspector 中绑定场景中唯一的 WorldStateRegistry ScriptableObject 资源。
///
/// OnSave从 Registry 读取 Collectible / Destroyed / Flag 个分类,写入 SaveData。
/// SavePoint 和 Door 两个分类由各自的 SaveableMonoBehaviour 独立写入,此处跳过
/// OnSave从 Registry 读取 Collectible / Destroyed / Door / Flag 个分类,写入 SaveData。
/// 每个分类在写入前先 Clear确保运行时删除的状态不会残留在存档里
/// OnLoad将完整的 SaveData 传递给 Registry恢复所有分类的运行时缓存。
/// 这是 Registry 从空白变为"知道世界状态"的唯一时机。
/// </summary>
@@ -29,6 +29,12 @@ namespace BaseGames.World
foreach (var id in _registry.GetAllIds(WorldObjectCategory.Destroyed))
data.World.DestroyedObjectIds.Add(id);
data.World.OpenedDoors.Clear();
foreach (var id in _registry.GetAllIds(WorldObjectCategory.Door))
data.World.OpenedDoors.Add(id);
// 清除所有 Flag 后重写,确保运行时 ClearFlag() 的变更能正确落盘
data.EventChains.WorldFlags.Clear();
foreach (var id in _registry.GetAllIds(WorldObjectCategory.Flag))
data.EventChains.WorldFlags[id] = true;
}