34 lines
972 B
C#
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);
|
|
}
|
|
}
|
|
}
|