private static void ResumeScene() { if (Application.isPlaying) { return; } if (!Prefs.launch) { return; } if (forceUpdate || CheckInterval < frameCount++) { var waitScene = EditorSceneChangerPrefs.waitScene; var lastScene = EditorSceneChangerPrefs.lastScene; if (string.IsNullOrEmpty(waitScene) && !string.IsNullOrEmpty(lastScene)) { if (disposable != null) { disposable.Dispose(); disposable = null; } disposable = EditorSceneChanger.SceneResume(() => Prefs.launch = false).Subscribe(); } // 現在のシーンから起動されたのでResumeされない. else { Prefs.launch = false; ResumeSceneInstance(); } frameCount = 0; forceUpdate = false; } }
private static void ResumeScene() { // 遷移中ではない. if (EditorSceneChanger.State == SceneChangeState.None) { var currentScene = GetCurrentScenePath(); var resumeScene = EditorSceneChanger.Prefs.resumeScene; var resume = true; // 戻り先シーンがある. resume &= !string.IsNullOrEmpty(resumeScene); // 現在のシーンが戻り先のシーンではない. resume &= currentScene != resumeScene; if (resume) { if (disposable != null) { disposable.Dispose(); disposable = null; } disposable = EditorSceneChanger.SceneResume() .Subscribe(_ => Prefs.status = Status.ResumeObject); } else { ResumeSceneInstance(); Prefs.status = Status.None; } Prefs.suspendObjectNames = new string[0]; } }