using AibisDream.Kit; using UnityEngine; namespace AibisDream.SaveSystem { /// /// sections["audio"]:FMOD 音乐/SFX 实例路径与 AMB 状态终态(AudioManager)。 /// 不记录播放进度,读档后按路径重新 CreateInstance 并 start。 /// public class AudioSnapshotProvider : ISyncSnapshotProvider { public string SaveId => SnapshotProviderIds.Audio; public int RestoreOrder => 50; public object Capture() { if (AudioManager.Instance == null) { Debug.LogWarning("[AudioSnapshotProvider] AudioManager 未初始化,跳过捕获。"); return null; } return AudioManager.Instance.CaptureSnapshot(); } public void Restore(object dto, SnapshotRestoreContext context) { if (dto is not AudioSnapshotDto audio) { context.Warn("[AudioSnapshotProvider] DTO 类型不匹配,跳过还原。"); return; } if (AudioManager.Instance == null) { context.Warn("[AudioSnapshotProvider] AudioManager 未初始化,跳过还原。"); return; } AudioManager.Instance.RestoreSnapshot(audio, context.Warn); } } }