示例#1
0
        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();
            }
        }
示例#2
0
 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);
         }
     }
 }