From a92882bf0008fef2df9c5217bef1e971af27216d Mon Sep 17 00:00:00 2001 From: r Star Date: Fri, 27 Jan 2023 20:57:29 +0800 Subject: [PATCH] add SaveSceneDialog if scene is dirty --- .../Editor/BookmarkEverythingEditor.cs | 36 ++++++++++++++++--- .../Assets/BookmarkEverything/package.json | 2 +- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs b/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs index c0c5591..f8adad6 100644 --- a/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs +++ b/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs @@ -10,6 +10,7 @@ using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; +using UnityEngine.SceneManagement; using Object = UnityEngine.Object; #endregion @@ -665,7 +666,7 @@ private void DrawProjectFinderEntries(string category) var asset = AssetDatabase.LoadMainAssetAtPath(path); var entryIsScene = asset is SceneAsset; var prefabType = PrefabUtility.GetPrefabType(asset); - if (entryIsScene) EditorSceneManager.OpenScene(path , OpenSceneMode.Single); + if (entryIsScene) SaveSceneDialog(path); else if (prefabType == PrefabType.Prefab) AssetDatabase.OpenAsset(asset); Selection.activeObject = asset; } @@ -720,6 +721,31 @@ private void DrawProjectFinderEntries(string category) } } + private static void SaveSceneDialog(string scenePath) + { + var option = EditorUtility.DisplayDialogComplex( + "Unsaved scene Changes" , + "Do you want to save the changes you made before load new scene?" , + "Save" , + "Cancel" , + "Don't Save"); + + switch (option) + { + // Save. + case 0 : + EditorSceneManager.SaveScene(EditorSceneManager.GetActiveScene()); + EditorSceneManager.OpenScene(scenePath , OpenSceneMode.Single); + break; + // cancel + case 1 : break; + // Don't Save. + case 2 : + EditorSceneManager.OpenScene(scenePath , OpenSceneMode.Single); + break; + } + } + private void DrawSettings() { DrawInnerSettings(); @@ -994,10 +1020,10 @@ private void LoadSettings() private void OnEnable() { - titleContent = RetrieveGUIContent("Bookmark" , "CustomSorting"); - _defaultGUIColor = GUI.color; - minSize = new Vector2(400 , 400); - _projectFinderTabIndex = EditorPrefs.GetInt(ProjectfindertabindexKey); + titleContent = RetrieveGUIContent("Bookmark" , "CustomSorting"); + _defaultGUIColor = GUI.color; + minSize = new Vector2(400 , 400); + _projectFinderTabIndex = EditorPrefs.GetInt(ProjectfindertabindexKey); lastProjectFinderTabeIndex = _projectFinderTabIndex; } diff --git a/BookmarkEverything/Assets/BookmarkEverything/package.json b/BookmarkEverything/Assets/BookmarkEverything/package.json index db79672..3930d96 100644 --- a/BookmarkEverything/Assets/BookmarkEverything/package.json +++ b/BookmarkEverything/Assets/BookmarkEverything/package.json @@ -2,7 +2,7 @@ "name": "com.rstartools.bookmarkeverything", "displayName": "Bookmark-Everything", "description": "Bookmark", - "version": "1.0.0", + "version": "1.0.1", "unity": "2022.2", "unityRelease": "0f1", "dependencies": {