Files
aibis-dream/Assets/Scripts/SaveSystem/Providers/SceneSnapshotProvider.cs
T

34 lines
972 B
C#

using System.Collections;
namespace AibisDream.SaveSystem
{
/// <summary>
/// sections["scene"]:当前 Addressable 场景。
/// RestoreOrder=10,读档时最先加载场景,供后续 env/actor 等依赖。
/// </summary>
public class SceneSnapshotProvider : ISnapshotProvider
{
public string SaveId => SnapshotProviderIds.Scene;
public int RestoreOrder => 10;
public object Capture()
{
var sceneLoader = SceneLoader.Instance;
return new SceneSnapshotDto
{
sceneName = sceneLoader != null ? sceneLoader.CurrentSceneName : null
};
}
public IEnumerator Restore(object dto)
{
if (dto is not SceneSnapshotDto scene || string.IsNullOrEmpty(scene.sceneName))
{
yield break;
}
yield return SceneLoader.Instance.LoadSceneAsync(scene.sceneName);
}
}
}