using System.Collections; using UnityEngine; namespace AibisDream.SaveSystem { /// /// sections["actor"]:场景中各角色显隐、槽位、动画状态、透明度等(ActorManager)。 /// RestoreOrder=40,依赖 scene 与 env 已就绪。 /// public class ActorSnapshotProvider : IAsyncSnapshotProvider { public string SaveId => SnapshotProviderIds.Actor; public int RestoreOrder => 40; public object Capture() { if (ActorManager.Instance == null) { Debug.LogWarning("[ActorSnapshotProvider] ActorManager 未初始化,跳过捕获。"); return null; } return ActorManager.Instance.CaptureSnapshot(); } public IEnumerator RestoreAsync(object dto, SnapshotRestoreContext context) { if (dto is not ActorSnapshotDto actors) { context.Warn("[ActorSnapshotProvider] DTO 类型不匹配,跳过还原。"); yield break; } if (ActorManager.Instance == null) { context.Warn("[ActorSnapshotProvider] ActorManager 未初始化,跳过还原。"); yield break; } yield return ActorManager.Instance.RestoreSnapshotAsync(actors); } } }