static void HandleSceneSave(Scene scene) { { var result = scene.path; var directory = Path.GetDirectoryName(result); var filenameWithoutExt = Path.GetFileNameWithoutExtension(result); if (s_CurrentInMemorySceneState.hasCloneableDependencies) { var oldDependencyFolder = Path.Combine(s_CurrentInMemorySceneState.rootFolder, s_CurrentInMemorySceneState.dependencyFolderName); var newDependencyFolder = Path.Combine(directory, filenameWithoutExt); if (Directory.Exists(newDependencyFolder)) { SceneTemplateUtils.DeleteAsset(newDependencyFolder); } var errorMsg = AssetDatabase.MoveAsset(oldDependencyFolder, newDependencyFolder); if (!string.IsNullOrEmpty(errorMsg)) { Debug.LogError(errorMsg); return; } } SceneTemplateUtils.DeleteAsset(s_CurrentInMemorySceneState.rootFolder); var success = EditorSceneManager.ReloadScene(scene); if (!success) { Debug.LogError($"Failed to reload scene {scene.path}"); } ClearInMemorySceneState(); } }
private static void ReloadUnsavedDirtyScene() { for (var i = 0; i < SceneManager.sceneCount; i++) { var scene = SceneManager.GetSceneAt(i); var isSceneNotPersisted = string.IsNullOrEmpty(scene.path); var isSceneDirty = scene.isDirty; if (isSceneNotPersisted && isSceneDirty) { EditorSceneManager.ReloadScene(scene); } } }