From eb27e5fd31f73b998a4bbd85511a31e40b8c61b7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 十一月 2025 17:03:47 +0800
Subject: [PATCH] 0312 关闭游戏内日志

---
 Main/Config/ConfigManager.cs |  407 ++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 258 insertions(+), 149 deletions(-)

diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index cb9c38e..47c6024 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -3,7 +3,11 @@
 using UnityEngine;
 using Cysharp.Threading.Tasks;
 using System.Reflection;
+using System.Linq;
 
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
 
 public class ConfigManager : ManagerBase<ConfigManager>
 {
@@ -33,93 +37,130 @@
         isLoadFinished = false;
 
         // 鍔犺浇閰嶇疆鏂囦欢
-        int totalConfigs = 60;
-        Type[] configTypes = new Type[] {
-            typeof(AppointItemConfig),
-            typeof(AudioConfig),
-            typeof(ChatBubbleBoxConfig),
+        HashSet<Type> configTypes = new HashSet<Type>() {
+            typeof(ADAwardConfig),
+            typeof(BattleMapConfig),
             typeof(ChestsAwardConfig),
-            typeof(ChestsConfig),
             typeof(CTGConfig),
-            typeof(CTGSelectItemConfig),
-            typeof(DailyLivenessRewardConfig),
-            typeof(DailyQuestConfig),
-            typeof(DailyQuestOpenTimeConfig),
-            typeof(DienstgradConfig),
-            typeof(DirtyNameConfig),
+            typeof(DailyTaskConfig),
+            typeof(DamageNumConfig),
             typeof(DirtyWordConfig),
-            typeof(EffectConfig),
-            typeof(EmojiPackConfig),
-            typeof(EquipGSParamConfig),
-            typeof(EquipPlaceMapConfig),
+            typeof(DungeonConfig),
+            typeof(DungeonOpenTimeConfig),
             typeof(FaceConfig),
-            typeof(FamilyConfig),
-            typeof(FamilyEmblemConfig),
-            typeof(FirstGoldConfig),
-            typeof(FuncConfigConfig),
-            typeof(FuncOpenLVConfig),
-            typeof(FunctionTeamSetConfig),
-            typeof(GetItemWaysConfig),
-            typeof(GmCmdConfig),
-            typeof(GuideConfig),
-            typeof(HeroAwakeConfig),
-            typeof(HeroBreakConfig),
-            typeof(HeroConfig),
-            typeof(HeroFetterConfig),
-            typeof(HeroQualityAwakeConfig),
-            typeof(HeroQualityBreakConfig),
-            typeof(HeroQualityConfig),
-            typeof(HeroSkinConfig),
-            typeof(HeroTalentConfig),
-            typeof(IconConfig),
+            typeof(FamilyDonateConfig),
+            typeof(FightPowerRatioConfig),
+            typeof(FirstChargeConfig),
+            typeof(GoldRushCampConfig),
+            typeof(GoldRushItemConfig),
+            typeof(GoldRushWorkerConfig),
+            typeof(HeroLineupHaloConfig),
+            typeof(HeroQualityLVConfig),
+            typeof(HorseClassConfig),
+            typeof(HorseSkinConfig),
+            typeof(ItemCompoundConfig),
             typeof(ItemConfig),
-            typeof(KickOutReasonConfig),
-            typeof(LanguageConfig),
-            typeof(MailConfig),
+            typeof(LLMJConfig),
+            typeof(MainChapterConfig),
+            typeof(MainLevelConfig),
+            typeof(ModelConfig),
             typeof(NPCConfig),
             typeof(NPCExConfig),
+            typeof(NPCLineupConfig),
             typeof(OrderInfoConfig),
+            typeof(PlayerAttrConfig),
             typeof(PlayerFaceConfig),
-            typeof(PlayerFacePicConfig),
-            typeof(PlayerLVConfig),
-            typeof(PlayerPropertyConfig),
-            typeof(priorbundleConfig),
-            typeof(RichTextMsgReplaceConfig),
-            typeof(RuleConfig),
-            typeof(SkillConfig),
+            typeof(RandomNameConfig),
+            typeof(SignInConfig),
             typeof(StoreConfig),
             typeof(SuccessConfig),
             typeof(SysInfoConfig),
+            typeof(TianziConfig),
+            typeof(TitleConfig),
             typeof(TitleStarUpConfig),
-            typeof(TreasureCntAwardConfig),
-            typeof(TreasureItemLibConfig),
             typeof(TreasureSetConfig),
-            typeof(XBGetItemConfig)
+            typeof(TreeLVConfig),
+            typeof(WindowSearchConfig),
+            typeof(XBGetItemConfig),
+            typeof(ZhanlingConfig)
         };
 
-        // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
-        for (int i = 0; i < configTypes.Length; i++)
+#if UNITY_EDITOR
+        HashSet<Type> configHashSet = new HashSet<Type>();
+        if (System.IO.File.Exists(Application.dataPath + "/fastConfig.txt") && Launch.Instance.isOpenConfigTesting)
         {
-            await LoadConfigByType(configTypes[i]);
-            loadingProgress = (float)(i + 1) / totalConfigs;
+            string[] strConfgsArr = System.IO.File.ReadAllLines(Application.dataPath + "/fastConfig.txt");
+            foreach (string str in strConfgsArr)
+            {
+                Type tpy = Type.GetType(str);
+                configHashSet.Add(tpy);
+            }
         }
+        //  缂栬緫鍣ㄤ笅鍔犲叆 璇勪及鍔犺浇鏃跺父
+        foreach (var config in configHashSet)
+        {
+            if (!configTypes.Add(config))
+            {
+                Debug.LogWarning($"閰嶇疆 {config.Name} 宸茬粡瀛樺湪浜� configTypes 涓紝璺宠繃娣诲姞銆�");
+            }
+        }
+        List<string> fastName = new List<string>();
+#endif
+        int iterator = 0;
+        int totalConfigs = configTypes.Count;
+
+        // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
+        foreach (var configType in configTypes)
+        {
+            var sw = System.Diagnostics.Stopwatch.StartNew();
+            LoadConfigByType(configType);
+            sw.Stop();
+#if UNITY_EDITOR
+            if (sw.ElapsedMilliseconds >= 100)
+            {
+                Debug.LogError($"鍔犺浇閰嶇疆 {configType.Name} 鑰楁椂杈冮暱: {sw.ElapsedMilliseconds} ms");
+            }
+            else if (sw.ElapsedMilliseconds <= 5)
+            {
+                fastName.Add(configType.Name);
+            }
+            Debug.Log($"鍔犺浇閰嶇疆: {configType.Name} 鐢ㄦ椂: {sw.ElapsedMilliseconds} ms");
+#endif
+            loadingProgress = (float)(iterator++ + 1) / totalConfigs;
+        }
+#if UNITY_EDITOR
+        if (Launch.Instance.isOpenConfigTesting)
+        {
+            System.IO.File.WriteAllText(Application.dataPath + "/fastConfig.txt", string.Join("\n", fastName));
+
+            //鍔犺浇瀹屽悗鍗歌浇
+            foreach (var configType in configTypes)
+            {
+                var methodInfo = configType.GetMethod("ForceRelease", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+                if (methodInfo != null)
+                {
+                    methodInfo.Invoke(null, null);
+                }
+            }
+        }
+#endif
 
         // 鍔犺浇瀹屾垚鍚庤缃甶sLoadFinished涓簍rue
         loadingProgress = 1f;
         isLoadFinished = true;
     }
 
-    public async UniTask LoadConfigByType(Type configType)
+    public void LoadConfigByType(Type configType)
     {
         string configName = configType.Name;
         if (configName.EndsWith("Config"))
         {
             configName = configName.Substring(0, configName.Length - 6);
         }
-        TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
-        if (textAsset != null)
+        string[] texts = ResManager.Instance.LoadConfig(configName);
+        if (texts != null)
         {
-            string[] lines = textAsset.text.Split('\n');
+            string[] lines = texts;
             var methodInfo = configType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
             if (methodInfo != null)
             {
@@ -147,10 +188,10 @@
     {
         string configName = typeof(T).Name;
 
-        TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
-        if (textAsset != null)
+        string[] texts = ResManager.Instance.LoadConfig(configName);
+        if (texts != null)
         {
-            string[] lines = textAsset.text.Split('\n');
+            string[] lines = texts;
             var methodInfo = typeof(T).GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
             if (methodInfo != null)
             {
@@ -191,125 +232,193 @@
 
     public override void Release()
     {
-        // 娓呯┖ AppointItemConfig 瀛楀吀
-        ClearConfigDictionary<AppointItemConfig>();
-        // 娓呯┖ AudioConfig 瀛楀吀
-        ClearConfigDictionary<AudioConfig>();
-        // 娓呯┖ ChatBubbleBoxConfig 瀛楀吀
-        ClearConfigDictionary<ChatBubbleBoxConfig>();
+        // 娓呯┖ ADAwardConfig 瀛楀吀
+        ClearConfigDictionary<ADAwardConfig>();
+        // 娓呯┖ BattleMapConfig 瀛楀吀
+        ClearConfigDictionary<BattleMapConfig>();
         // 娓呯┖ ChestsAwardConfig 瀛楀吀
         ClearConfigDictionary<ChestsAwardConfig>();
-        // 娓呯┖ ChestsConfig 瀛楀吀
-        ClearConfigDictionary<ChestsConfig>();
         // 娓呯┖ CTGConfig 瀛楀吀
         ClearConfigDictionary<CTGConfig>();
-        // 娓呯┖ CTGSelectItemConfig 瀛楀吀
-        ClearConfigDictionary<CTGSelectItemConfig>();
-        // 娓呯┖ DailyLivenessRewardConfig 瀛楀吀
-        ClearConfigDictionary<DailyLivenessRewardConfig>();
-        // 娓呯┖ DailyQuestConfig 瀛楀吀
-        ClearConfigDictionary<DailyQuestConfig>();
-        // 娓呯┖ DailyQuestOpenTimeConfig 瀛楀吀
-        ClearConfigDictionary<DailyQuestOpenTimeConfig>();
-        // 娓呯┖ DienstgradConfig 瀛楀吀
-        ClearConfigDictionary<DienstgradConfig>();
-        // 娓呯┖ DirtyNameConfig 瀛楀吀
-        ClearConfigDictionary<DirtyNameConfig>();
+        // 娓呯┖ DailyTaskConfig 瀛楀吀
+        ClearConfigDictionary<DailyTaskConfig>();
+        // 娓呯┖ DamageNumConfig 瀛楀吀
+        ClearConfigDictionary<DamageNumConfig>();
         // 娓呯┖ DirtyWordConfig 瀛楀吀
         ClearConfigDictionary<DirtyWordConfig>();
-        // 娓呯┖ EffectConfig 瀛楀吀
-        ClearConfigDictionary<EffectConfig>();
-        // 娓呯┖ EmojiPackConfig 瀛楀吀
-        ClearConfigDictionary<EmojiPackConfig>();
-        // 娓呯┖ EquipGSParamConfig 瀛楀吀
-        ClearConfigDictionary<EquipGSParamConfig>();
-        // 娓呯┖ EquipPlaceMapConfig 瀛楀吀
-        ClearConfigDictionary<EquipPlaceMapConfig>();
+        // 娓呯┖ DungeonConfig 瀛楀吀
+        ClearConfigDictionary<DungeonConfig>();
+        // 娓呯┖ DungeonOpenTimeConfig 瀛楀吀
+        ClearConfigDictionary<DungeonOpenTimeConfig>();
         // 娓呯┖ FaceConfig 瀛楀吀
         ClearConfigDictionary<FaceConfig>();
-        // 娓呯┖ FamilyConfig 瀛楀吀
-        ClearConfigDictionary<FamilyConfig>();
-        // 娓呯┖ FamilyEmblemConfig 瀛楀吀
-        ClearConfigDictionary<FamilyEmblemConfig>();
-        // 娓呯┖ FirstGoldConfig 瀛楀吀
-        ClearConfigDictionary<FirstGoldConfig>();
-        // 娓呯┖ FuncConfigConfig 瀛楀吀
-        ClearConfigDictionary<FuncConfigConfig>();
-        // 娓呯┖ FuncOpenLVConfig 瀛楀吀
-        ClearConfigDictionary<FuncOpenLVConfig>();
-        // 娓呯┖ FunctionTeamSetConfig 瀛楀吀
-        ClearConfigDictionary<FunctionTeamSetConfig>();
-        // 娓呯┖ GetItemWaysConfig 瀛楀吀
-        ClearConfigDictionary<GetItemWaysConfig>();
-        // 娓呯┖ GmCmdConfig 瀛楀吀
-        ClearConfigDictionary<GmCmdConfig>();
-        // 娓呯┖ GuideConfig 瀛楀吀
-        ClearConfigDictionary<GuideConfig>();
-        // 娓呯┖ HeroAwakeConfig 瀛楀吀
-        ClearConfigDictionary<HeroAwakeConfig>();
-        // 娓呯┖ HeroBreakConfig 瀛楀吀
-        ClearConfigDictionary<HeroBreakConfig>();
-        // 娓呯┖ HeroConfig 瀛楀吀
-        ClearConfigDictionary<HeroConfig>();
-        // 娓呯┖ HeroFetterConfig 瀛楀吀
-        ClearConfigDictionary<HeroFetterConfig>();
-        // 娓呯┖ HeroQualityAwakeConfig 瀛楀吀
-        ClearConfigDictionary<HeroQualityAwakeConfig>();
-        // 娓呯┖ HeroQualityBreakConfig 瀛楀吀
-        ClearConfigDictionary<HeroQualityBreakConfig>();
-        // 娓呯┖ HeroQualityConfig 瀛楀吀
-        ClearConfigDictionary<HeroQualityConfig>();
-        // 娓呯┖ HeroSkinConfig 瀛楀吀
-        ClearConfigDictionary<HeroSkinConfig>();
-        // 娓呯┖ HeroTalentConfig 瀛楀吀
-        ClearConfigDictionary<HeroTalentConfig>();
-        // 娓呯┖ IconConfig 瀛楀吀
-        ClearConfigDictionary<IconConfig>();
+        // 娓呯┖ FamilyDonateConfig 瀛楀吀
+        ClearConfigDictionary<FamilyDonateConfig>();
+        // 娓呯┖ FightPowerRatioConfig 瀛楀吀
+        ClearConfigDictionary<FightPowerRatioConfig>();
+        // 娓呯┖ FirstChargeConfig 瀛楀吀
+        ClearConfigDictionary<FirstChargeConfig>();
+        // 娓呯┖ GoldRushCampConfig 瀛楀吀
+        ClearConfigDictionary<GoldRushCampConfig>();
+        // 娓呯┖ GoldRushItemConfig 瀛楀吀
+        ClearConfigDictionary<GoldRushItemConfig>();
+        // 娓呯┖ GoldRushWorkerConfig 瀛楀吀
+        ClearConfigDictionary<GoldRushWorkerConfig>();
+        // 娓呯┖ HeroLineupHaloConfig 瀛楀吀
+        ClearConfigDictionary<HeroLineupHaloConfig>();
+        // 娓呯┖ HeroQualityLVConfig 瀛楀吀
+        ClearConfigDictionary<HeroQualityLVConfig>();
+        // 娓呯┖ HorseClassConfig 瀛楀吀
+        ClearConfigDictionary<HorseClassConfig>();
+        // 娓呯┖ HorseSkinConfig 瀛楀吀
+        ClearConfigDictionary<HorseSkinConfig>();
+        // 娓呯┖ ItemCompoundConfig 瀛楀吀
+        ClearConfigDictionary<ItemCompoundConfig>();
         // 娓呯┖ ItemConfig 瀛楀吀
         ClearConfigDictionary<ItemConfig>();
-        // 娓呯┖ KickOutReasonConfig 瀛楀吀
-        ClearConfigDictionary<KickOutReasonConfig>();
-        // 娓呯┖ LanguageConfig 瀛楀吀
-        ClearConfigDictionary<LanguageConfig>();
-        // 娓呯┖ MailConfig 瀛楀吀
-        ClearConfigDictionary<MailConfig>();
+        // 娓呯┖ LLMJConfig 瀛楀吀
+        ClearConfigDictionary<LLMJConfig>();
+        // 娓呯┖ MainChapterConfig 瀛楀吀
+        ClearConfigDictionary<MainChapterConfig>();
+        // 娓呯┖ MainLevelConfig 瀛楀吀
+        ClearConfigDictionary<MainLevelConfig>();
+        // 娓呯┖ ModelConfig 瀛楀吀
+        ClearConfigDictionary<ModelConfig>();
         // 娓呯┖ NPCConfig 瀛楀吀
         ClearConfigDictionary<NPCConfig>();
         // 娓呯┖ NPCExConfig 瀛楀吀
         ClearConfigDictionary<NPCExConfig>();
+        // 娓呯┖ NPCLineupConfig 瀛楀吀
+        ClearConfigDictionary<NPCLineupConfig>();
         // 娓呯┖ OrderInfoConfig 瀛楀吀
         ClearConfigDictionary<OrderInfoConfig>();
+        // 娓呯┖ PlayerAttrConfig 瀛楀吀
+        ClearConfigDictionary<PlayerAttrConfig>();
         // 娓呯┖ PlayerFaceConfig 瀛楀吀
         ClearConfigDictionary<PlayerFaceConfig>();
-        // 娓呯┖ PlayerFacePicConfig 瀛楀吀
-        ClearConfigDictionary<PlayerFacePicConfig>();
-        // 娓呯┖ PlayerLVConfig 瀛楀吀
-        ClearConfigDictionary<PlayerLVConfig>();
-        // 娓呯┖ PlayerPropertyConfig 瀛楀吀
-        ClearConfigDictionary<PlayerPropertyConfig>();
-        // 娓呯┖ priorbundleConfig 瀛楀吀
-        ClearConfigDictionary<priorbundleConfig>();
-        // 娓呯┖ RichTextMsgReplaceConfig 瀛楀吀
-        ClearConfigDictionary<RichTextMsgReplaceConfig>();
-        // 娓呯┖ RuleConfig 瀛楀吀
-        ClearConfigDictionary<RuleConfig>();
-        // 娓呯┖ SkillConfig 瀛楀吀
-        ClearConfigDictionary<SkillConfig>();
+        // 娓呯┖ RandomNameConfig 瀛楀吀
+        ClearConfigDictionary<RandomNameConfig>();
+        // 娓呯┖ SignInConfig 瀛楀吀
+        ClearConfigDictionary<SignInConfig>();
         // 娓呯┖ StoreConfig 瀛楀吀
         ClearConfigDictionary<StoreConfig>();
         // 娓呯┖ SuccessConfig 瀛楀吀
         ClearConfigDictionary<SuccessConfig>();
         // 娓呯┖ SysInfoConfig 瀛楀吀
         ClearConfigDictionary<SysInfoConfig>();
+        // 娓呯┖ TianziConfig 瀛楀吀
+        ClearConfigDictionary<TianziConfig>();
+        // 娓呯┖ TitleConfig 瀛楀吀
+        ClearConfigDictionary<TitleConfig>();
         // 娓呯┖ TitleStarUpConfig 瀛楀吀
         ClearConfigDictionary<TitleStarUpConfig>();
-        // 娓呯┖ TreasureCntAwardConfig 瀛楀吀
-        ClearConfigDictionary<TreasureCntAwardConfig>();
-        // 娓呯┖ TreasureItemLibConfig 瀛楀吀
-        ClearConfigDictionary<TreasureItemLibConfig>();
         // 娓呯┖ TreasureSetConfig 瀛楀吀
         ClearConfigDictionary<TreasureSetConfig>();
+        // 娓呯┖ TreeLVConfig 瀛楀吀
+        ClearConfigDictionary<TreeLVConfig>();
+        // 娓呯┖ WindowSearchConfig 瀛楀吀
+        ClearConfigDictionary<WindowSearchConfig>();
         // 娓呯┖ XBGetItemConfig 瀛楀吀
         ClearConfigDictionary<XBGetItemConfig>();
+        // 娓呯┖ ZhanlingConfig 瀛楀吀
+        ClearConfigDictionary<ZhanlingConfig>();
     }
+
+#if UNITY_EDITOR
+    [MenuItem("Tools/Config/鑷")]
+    public static void CheckAndGenerateFastConfig()
+    {
+        // 鑾峰彇 Editor Assembly
+        var editorAsm = System.AppDomain.CurrentDomain.GetAssemblies()
+            .FirstOrDefault(a => a.FullName.Contains("Editor"));
+
+        if (editorAsm == null)
+        {
+            Debug.LogError("[鑷] 鏈壘鍒� Editor Assembly锛屾棤娉曡嚜妫�銆�");
+            return;
+        }
+
+        // 鍙嶅皠鑾峰彇 ConfigGenerater 绫诲瀷
+        var configGeneraterType = editorAsm.GetType("ConfigGenerater");
+        if (configGeneraterType == null)
+        {
+            Debug.LogError("[鑷] 鏈壘鍒� ConfigGenerater 绫诲瀷銆�");
+            return;
+        }
+
+        // 璋冪敤 GetAllConfigClasses 闈欐�佹柟娉�
+        var getAllConfigClassesMethod = configGeneraterType.GetMethod("GetAllConfigClasses", BindingFlags.Public | BindingFlags.Static);
+        var allConfigClasses = getAllConfigClassesMethod?.Invoke(null, null) as List<string>;
+        if (allConfigClasses == null)
+        {
+            Debug.LogError("[鑷] 鑾峰彇鍏ㄩ儴閰嶇疆绫诲け璐ャ��");
+            return;
+        }
+
+        // 鑾峰彇 ExcludeClassList 瀛楁
+        var excludeField = configGeneraterType.GetField("ExcludeClassList", BindingFlags.Public | BindingFlags.Static);
+        var excludeClassList = excludeField?.GetValue(null) as List<string> ?? new List<string>();
+
+        // 鎺掗櫎涓嶉渶瑕佺殑绫�
+        var checkClasses = allConfigClasses.Where(c => !excludeClassList.Contains(c)).ToList();
+
+        List<string> fastName = new List<string>();
+
+        foreach (var className in checkClasses)
+        {
+            // 杩欓噷涔熻鐢� Editor Assembly 鑾峰彇绫诲瀷
+            var configType = editorAsm.GetType(className) ?? Type.GetType(className);
+            if (configType == null)
+            {
+                Debug.LogWarning($"[鑷] 鏈壘鍒扮被鍨�: {className}");
+                continue;
+            }
+
+            var sw = System.Diagnostics.Stopwatch.StartNew();
+
+            // 鍙嶅皠璋冪敤闈欐�両nit鏂规硶
+            string configName = configType.Name;
+            if (configName.EndsWith("Config"))
+                configName = configName.Substring(0, configName.Length - 6);
+
+            string[] texts = ResManager.Instance.LoadConfig(configName);
+            if (texts != null)
+            {
+                string[] lines = texts;
+                var methodInfo = configType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+                if (methodInfo != null)
+                {
+                    methodInfo.Invoke(null, new object[] { lines });
+                }
+            }
+
+            sw.Stop();
+
+            if (sw.ElapsedMilliseconds >= 100)
+            {
+                Debug.LogError($"[鑷] 鍔犺浇閰嶇疆 {configType.Name} 鑰楁椂杈冮暱: {sw.ElapsedMilliseconds} ms");
+            }
+            else if (sw.ElapsedMilliseconds <= 5)
+            {
+                fastName.Add(configType.Name);
+            }
+            Debug.Log($"[鑷] 鍔犺浇閰嶇疆: {configType.Name} 鐢ㄦ椂: {sw.ElapsedMilliseconds} ms");
+        }
+
+        // 閲婃斁鎵�鏈夊凡鍔犺浇鐨勯厤缃�
+        foreach (var className in checkClasses)
+        {
+            var configType = editorAsm.GetType(className) ?? Type.GetType(className);
+            if (configType == null) continue;
+            var methodInfo = configType.GetMethod("ForceRelease", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+            if (methodInfo != null)
+            {
+                methodInfo.Invoke(null, null);
+            }
+        }
+
+        System.IO.File.WriteAllText(Application.dataPath + "/fastConfig.txt", string.Join("\n", fastName));
+        Debug.Log($"[鑷] fastConfig.txt 鐢熸垚瀹屾瘯锛屽揩閫熻〃鏈夛細{string.Join(", ", fastName)}");
+    }
+#endif
 }

--
Gitblit v1.8.0