44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
using AibisDream.Kit;
|
||
using UnityEngine;
|
||
|
||
namespace AibisDream.SaveSystem
|
||
{
|
||
/// <summary>
|
||
/// sections["audio"]:FMOD 音乐/SFX 实例路径与 AMB 状态终态(AudioManager)。
|
||
/// 不记录播放进度,读档后按路径重新 CreateInstance 并 start。
|
||
/// </summary>
|
||
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);
|
||
}
|
||
}
|
||
}
|