43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
using UnityEngine;
|
|
|
|
namespace AibisDream.SaveSystem
|
|
{
|
|
/// <summary>
|
|
/// sections["env"]:场景内时间/天气(EnvironmentManager)。
|
|
/// RestoreOrder=20,在 scene 加载完成后、macro 之前还原环境。
|
|
/// </summary>
|
|
public class EnvironmentSnapshotProvider : ISyncSnapshotProvider
|
|
{
|
|
public string SaveId => SnapshotProviderIds.Environment;
|
|
public int RestoreOrder => 20;
|
|
|
|
public object Capture()
|
|
{
|
|
if (EnvironmentManager.Instance == null)
|
|
{
|
|
Debug.LogWarning("[EnvironmentSnapshotProvider] EnvironmentManager 未初始化,跳过捕获。");
|
|
return null;
|
|
}
|
|
|
|
return EnvironmentManager.Instance.CaptureSnapshot();
|
|
}
|
|
|
|
public void Restore(object dto, SnapshotRestoreContext context)
|
|
{
|
|
if (dto is not EnvironmentSnapshotDto env)
|
|
{
|
|
context.Warn("[EnvironmentSnapshotProvider] DTO 类型不匹配,跳过还原。");
|
|
return;
|
|
}
|
|
|
|
if (EnvironmentManager.Instance == null)
|
|
{
|
|
context.Warn("[EnvironmentSnapshotProvider] EnvironmentManager 未初始化,跳过还原。");
|
|
return;
|
|
}
|
|
|
|
EnvironmentManager.Instance.RestoreSnapshot(env);
|
|
}
|
|
}
|
|
}
|