From d4482cf1c4f8cacdbaca9c1d835609caac0d494a Mon Sep 17 00:00:00 2001 From: chengshengfei Date: Sat, 10 Aug 2024 16:47:30 +0800 Subject: [PATCH] [opt] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 中文:优化设置界面的tab切换,页面数据保存逻辑 English: Optimize tab switching and page data saving logic in the settings interface --- .../GameSettings/TEngineSettingsProvider.cs | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/UnityProject/Assets/TEngine/Editor/GameSettings/TEngineSettingsProvider.cs b/UnityProject/Assets/TEngine/Editor/GameSettings/TEngineSettingsProvider.cs index f161009b..4d3e8544 100644 --- a/UnityProject/Assets/TEngine/Editor/GameSettings/TEngineSettingsProvider.cs +++ b/UnityProject/Assets/TEngine/Editor/GameSettings/TEngineSettingsProvider.cs @@ -35,18 +35,36 @@ public class TEngineSettingsProvider : SettingsProvider public override void OnDeactivate() { base.OnDeactivate(); - SaveAssetData(m_SettingsPath); + + // 确保只有在有修改时才保存 + if (m_CustomSettings != null && m_CustomSettings.hasModifiedProperties) + { + EditorApplication.delayCall += () => SaveAssetData(k_SettingsPath); + } } void SaveAssetData(string path) { - TEngineSettings old = AssetDatabase.LoadAssetAtPath(m_SettingsPath); + TEngineSettings old = AssetDatabase.LoadAssetAtPath(k_SettingsPath); + if (old == null) + { + Debug.LogError($"Failed to load TEngineSettings from path: {k_SettingsPath}"); + return; + } + TEngineSettings data = ScriptableObject.CreateInstance(); data.Set(old.FrameworkGlobalSettings, old.BybridCLRCustomGlobalSettings); - AssetDatabase.DeleteAsset(path); - AssetDatabase.CreateAsset(data, path); - AssetDatabase.SaveAssets(); - AssetDatabase.Refresh(); + + if (AssetDatabase.DeleteAsset(path)) + { + AssetDatabase.CreateAsset(data, path); + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + else + { + Debug.LogError($"Failed to delete existing asset at path: {path}"); + } }