public static void RestoreState(SceneState state) { var scenes = new SceneSetup[state.Scenes.Length]; for (var i = 0; i < state.Scenes.Length; i++) { scenes[i] = new SceneSetup { isActive = state.Scenes[i].IsActive, isLoaded = state.Scenes[i].IsLoaded, path = state.Scenes[i].Path } } ; EditorSceneManager.RestoreSceneManagerSetup(scenes); } #endregion }
// SceneSetup is not serializable so this little dance is necessary to persist the editor state through play // mode changes public static SceneState CaptureState() { var state = new SceneState(); var setup = EditorSceneManager.GetSceneManagerSetup(); state.Scenes = new SceneState.SceneData[setup.Length]; for (var i = 0; i < setup.Length; i++) { state.Scenes[i] = new SceneState.SceneData { IsActive = setup[i].isActive, IsLoaded = setup[i].isLoaded, Path = setup[i].path } } ; return(state); }