From c6a7ac3739907e8bb7c751d408e227e19f246f49 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 08 五月 2026 17:27:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into h5version

---
 Main/Config/ConfigManager.cs |  369 ++++++++++++++++------------------------------------
 1 files changed, 115 insertions(+), 254 deletions(-)

diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index e178ae3..e9e2723 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -17,16 +17,12 @@
         private set;
     }
 
-    private List<Type> preInitConfig = new List<Type>()
-    {
-      typeof (FuncConfigConfig),  
-    };
-
     private float loadingProgress = 0f;
 
-    public override async UniTask Init()
+    public override void Init()
     {
-        await InitConfigs();
+        base.Init();
+        InitConfigs();
     }
 
     public virtual async UniTask InitConfigs()
@@ -35,25 +31,12 @@
         await LoadConfigs();
     }
 
-    public async UniTask PreInit()
-    {
-        List<UniTask> uniTasks = new List<UniTask>();
-        foreach (var type in preInitConfig)
-        {
-            uniTasks.Add(LoadConfigByTypeAsync(type));
-        }
-        await UniTask.WhenAll(uniTasks);
-    }
-
     protected async UniTask LoadConfigs()
     {
         loadingProgress = 0f;
         isLoadFinished = false;
 
-        // 鑷姩鐢熸垚锛氭敹闆嗘墍鏈夐厤缃被鍨嬶紙姝ゆ灏嗚 ConfigGenerater.Generate 鑷姩瑕嗙洊锛�
-        // 鑷姩鐢熸垚锛氭敹闆嗘墍鏈夐厤缃被鍨�
-        // 鑷姩鐢熸垚锛氭敹闆嗘墍鏈夐厤缃被鍨�
-        // 鑷姩鐢熸垚锛氭敹闆嗘墍鏈夐厤缃被鍨�
+        // 鍔犺浇閰嶇疆鏂囦欢
         HashSet<Type> configTypes = new HashSet<Type>() {
             typeof(ActBillboardAwardConfig),
             typeof(ActHeroAppearArtConfig),
@@ -62,47 +45,33 @@
             typeof(ActHeroReturnArtConfig),
             typeof(ActLunhuidianTypeConfig),
             typeof(ActSignAwardConfig),
+            typeof(ActSignConfig),
+            typeof(ActSpecialSaleConfig),
+            typeof(ActTaskConfig),
+            typeof(ActTaskTempConfig),
             typeof(ActTotalRechargeConfig),
             typeof(ActTotalRechargeTempConfig),
             typeof(ActTotDayRechargeConfig),
             typeof(ActTotDayRechargeTempConfig),
             typeof(ADAwardConfig),
-            typeof(AppointItemConfig),
-            typeof(AudioConfig),
             typeof(BattleMapConfig),
             typeof(BeautyConfig),
             typeof(BeautyQualityLVConfig),
             typeof(BeautySkinConfig),
-            typeof(ChatBubbleBoxConfig),
             typeof(ChestsAwardConfig),
-            typeof(ChestsConfig),
             typeof(CTGConfig),
-            typeof(CTGSelectItemConfig),
-            typeof(DailyLivenessRewardConfig),
             typeof(DailyTaskConfig),
             typeof(DamageNumConfig),
-            typeof(DirtyNameConfig),
             typeof(DirtyWordConfig),
             typeof(DungeonConfig),
             typeof(DungeonOpenTimeConfig),
-            typeof(EffectConfig),
-            typeof(EmojiPackConfig),
             typeof(FaceConfig),
-            typeof(FamilyConfig),
             typeof(FamilyDonateConfig),
-            typeof(FamilyEmblemConfig),
             typeof(FBDJGEffectConfig),
             typeof(FBDJGLevelConfig),
             typeof(FBDJGQuickConfig),
             typeof(FightPowerRatioConfig),
             typeof(FirstChargeConfig),
-            typeof(FirstGoldConfig),
-            typeof(FrameAnimationConfig),
-            typeof(FuncConfigConfig),
-            typeof(FuncOpenLVConfig),
-            typeof(FunctionTeamSetConfig),
-            typeof(GetItemWaysConfig),
-            typeof(GmCmdConfig),
             typeof(GoldRushCampConfig),
             typeof(GoldRushItemConfig),
             typeof(GoldRushWorkerConfig),
@@ -112,32 +81,18 @@
             typeof(GubaoResonanceAttrConfig),
             typeof(GubaoResonanceConfig),
             typeof(GubaoStarConfig),
-            typeof(GuideConfig),
-            typeof(HeroAwakeConfig),
-            typeof(HeroBreakConfig),
-            typeof(HeroConfig),
             typeof(HeroFatesConfig),
             typeof(HeroFatesQualityLVConfig),
-            typeof(HeroFetterConfig),
             typeof(HeroLineupHaloConfig),
-            typeof(HeroQualityAwakeConfig),
-            typeof(HeroQualityBreakConfig),
-            typeof(HeroQualityConfig),
             typeof(HeroQualityLVConfig),
             typeof(HeroSkinAttrConfig),
-            typeof(HeroSkinConfig),
-            typeof(HeroTalentConfig),
             typeof(HorseClassConfig),
             typeof(HorseIDConfig),
             typeof(HorseSkinConfig),
-            typeof(IconConfig),
             typeof(ItemCompoundConfig),
             typeof(ItemConfig),
-            typeof(KickOutReasonConfig),
-            typeof(LanguageConfig),
             typeof(LineupRecommendConfig),
             typeof(LLMJConfig),
-            typeof(MailConfig),
             typeof(MainChapterConfig),
             typeof(MainLevelConfig),
             typeof(MGGanwuLVConfig),
@@ -152,24 +107,16 @@
             typeof(OrderInfoConfig),
             typeof(PlayerAttrConfig),
             typeof(PlayerFaceConfig),
-            typeof(PlayerFacePicConfig),
-            typeof(PlayerLVConfig),
-            typeof(PlayerPropertyConfig),
             typeof(PopWinOrderConfig),
             typeof(PresetUnlockConfig),
             typeof(PriorBundleConfig),
             typeof(RandomNameConfig),
-            typeof(RealmConfig),
-            typeof(RealmLVUPTaskConfig),
-            typeof(RichTextMsgReplaceConfig),
-            typeof(RuleConfig),
+            typeof(RobotConfig),
             typeof(SignInConfig),
-            typeof(SkillConfig),
             typeof(SkillSkinConfig),
             typeof(StoreConfig),
             typeof(SuccessConfig),
             typeof(SysInfoConfig),
-            typeof(TaskConfig),
             typeof(TianziConfig),
             typeof(TimingGiftConfig),
             typeof(TimingGiftTypeConfig),
@@ -177,8 +124,6 @@
             typeof(TitleStarUpConfig),
             typeof(TravelEventConfig),
             typeof(TravelSceneryConfig),
-            typeof(TreasureCntAwardConfig),
-            typeof(TreasureItemLibConfig),
             typeof(TreasureSetConfig),
             typeof(TreeLVConfig),
             typeof(WindowSearchConfig),
@@ -186,85 +131,64 @@
             typeof(ZhanlingConfig)
         };
 
-
+#if UNITY_EDITOR
+        HashSet<Type> configHashSet = new HashSet<Type>();
+        if (System.IO.File.Exists(Application.dataPath + "/fastConfig.txt") && Launch.Instance.isOpenConfigTesting)
+        {
+            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;
-
-#if UNITY_WEBGL && !UNITY_EDITOR
-        // ============================================================
-        // WebGL 浼樺寲锛氫袱闃舵鍔犺浇
-        // 闃舵1: 涓�娆℃�у苟鍙戝彂璧锋墍鏈� TextAsset 鍔犺浇锛堝悓 bundle 鍙笅杞戒竴娆★級
-        // 闃舵2: 浠庡唴瀛樹腑鍒嗘壒瑙f瀽锛屾瘡鎵� Yield 闃叉娴忚鍣ㄥ崱姝�
-        // ============================================================
-
-        // 闃舵1: 骞跺彂鍔犺浇鎵�鏈夐厤缃枃鏈埌鍐呭瓨
-        Debug.Log("[ConfigManager] WebGL 闃舵1: 鎵归噺鍔犺浇閰嶇疆鏂囦欢...");
-        var configList = configTypes.ToList();
-        var configDataMap = new Dictionary<Type, string[]>(totalConfigs);
-        var loadTasks = new List<UniTask>(totalConfigs);
-
-        foreach (var configType in configList)
-        {
-            var ct = configType; // closure capture
-            loadTasks.Add(LoadConfigTextAsync(ct).ContinueWith(texts =>
-            {
-                if (texts != null)
-                    configDataMap[ct] = texts;
-                else
-                    Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {ct.Name}");
-            }));
-        }
-        await UniTask.WhenAll(loadTasks);
-        loadingProgress = 0.5f; // 缃戠粶鍔犺浇瀹屾垚 50%
-        Debug.Log($"[ConfigManager] WebGL 闃舵1瀹屾垚: {configDataMap.Count}/{totalConfigs} 涓厤缃凡鍔犺浇鍒板唴瀛�");
-
-        // 闃舵2: 浠庡唴瀛樹腑鍒嗘壒瑙f瀽鍒濆鍖�
-        const int parseBatchSize = 10;
-        int parsed = 0;
-        foreach (var configType in configList)
-        {
-            if (configDataMap.TryGetValue(configType, out var texts))
-            {
-                InitConfigFromTexts(configType, texts);
-            }
-            parsed++;
-            loadingProgress = 0.5f + 0.5f * parsed / totalConfigs;
-
-            // 姣� parseBatchSize 涓鍑轰富绾跨▼
-            if (parsed % parseBatchSize == 0)
-                await UniTask.Yield();
-        }
-#else
-        List<UniTask> loadTasks = new List<UniTask>();
 
         // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
         foreach (var configType in configTypes)
         {
-#if UNITY_EDITOR
             var sw = System.Diagnostics.Stopwatch.StartNew();
-#endif
-            UniTask uniTask = LoadConfigByTypeAsync(configType).ContinueWith(() =>
-            {
+            LoadConfigByType(configType);
+            sw.Stop();
 #if UNITY_EDITOR
-                if (sw.ElapsedMilliseconds >= 100)
-                {
-                    Debug.LogWarning($"鍔犺浇閰嶇疆 {configType.Name} 鑰楁椂杈冮暱: {sw.ElapsedMilliseconds} ms");
-                }
-                else
-                {
-                    Debug.Log($"鍔犺浇閰嶇疆: {configType.Name} 鐢ㄦ椂: {sw.ElapsedMilliseconds} ms");
-                }
-                sw.Stop();
+            if (sw.ElapsedMilliseconds >= 500)
+            {
+                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) / totalConfigs;
-            });
-            
-            loadTasks.Add(uniTask);
-
+            loadingProgress = (float)(iterator++ + 1) / totalConfigs;
         }
+#if UNITY_EDITOR
+        if (Launch.Instance.isOpenConfigTesting)
+        {
+            System.IO.File.WriteAllText(Application.dataPath + "/fastConfig.txt", string.Join("\n", fastName));
 
-        await UniTask.WhenAll(loadTasks);
+            //鍔犺浇瀹屽悗鍗歌浇
+            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
@@ -272,64 +196,28 @@
         isLoadFinished = true;
     }
 
-    // public void LoadConfigByType(Type configType)
-    // {
-    //     string configName = configType.Name;
-    //     if (configName.EndsWith("Config"))
-    //     {
-    //         configName = configName.Substring(0, configName.Length - 6);
-    //     }
-    //     #pragma warning disable CS0618 // Obsolete 鈥� sync legacy fallback, use LoadConfigByTypeAsync
-    //     string[] texts = ResManager.Instance.LoadConfig(configName);
-    //     #pragma warning restore CS0618
-    //     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 });
-    //             // 璁剧疆鍒濆鍖栨爣蹇�
-    //             var isInitField = configType.GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
-    //             if (isInitField != null)
-    //             {
-    //                 isInitField.SetValue(null, true);
-    //             }
-    //             Debug.Log($"鍔犺浇閰嶇疆: {configType.Name} 鎴愬姛");
-    //         }
-    //         else
-    //         {
-    //             Debug.LogError($"閰嶇疆绫� {configType.Name} 娌℃湁闈欐�両nit鏂规硶");
-    //         }
-    //     }
-    //     else
-    //     {
-    //         Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
-    //     }
-    // }
-
-    /// <summary>
-    /// US2: Async variant of LoadConfigByType. Uses UniTask-based config loading.
-    /// </summary>
-    public async UniTask LoadConfigByTypeAsync(Type configType)
+    public void LoadConfigByType(Type configType)
     {
         string configName = configType.Name;
         if (configName.EndsWith("Config"))
         {
             configName = configName.Substring(0, configName.Length - 6);
         }
-        string[] texts = await ResManager.Instance.LoadConfigAsync(configName);
+        string[] texts = ResManager.Instance.LoadConfig(configName);
         if (texts != null)
         {
-        var methodInfo = configType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+            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[] { texts });
+                methodInfo.Invoke(null, new object[] { lines });
+                // 璁剧疆鍒濆鍖栨爣蹇�
                 var isInitField = configType.GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
                 if (isInitField != null)
                 {
                     isInitField.SetValue(null, true);
                 }
+                Debug.Log($"鍔犺浇閰嶇疆: {configType.Name} 鎴愬姛");
             }
             else
             {
@@ -342,38 +230,36 @@
         }
     }
 
-    // private async UniTask LoadConfig<T>() where T : class
-    // {
-    //     string configName = typeof(T).Name;
+    private async UniTask LoadConfig<T>() where T : class
+    {
+        string configName = typeof(T).Name;
 
-    //     #pragma warning disable CS0618
-    //     string[] texts = ResManager.Instance.LoadConfig(configName);
-    //     #pragma warning restore CS0618
-    //     if (texts != null)
-    //     {
-    //         string[] lines = texts;
-    //         var methodInfo = typeof(T).GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
-    //         if (methodInfo != null)
-    //         {
-    //             methodInfo.Invoke(null, lines);
-    //             // 璁剧疆鍒濆鍖栨爣蹇�
-    //             var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
-    //             if (isInitField != null)
-    //             {
-    //                 isInitField.SetValue(null, true);
-    //             }
-    //             Debug.Log($"鍔犺浇閰嶇疆: {typeof(T).Name} 鎴愬姛");
-    //         }
-    //         else
-    //         {
-    //             Debug.LogError($"閰嶇疆绫� {typeof(T).Name} 娌℃湁闈欐�両nit鏂规硶");
-    //         }
-    //     }
-    //     else
-    //     {
-    //         Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
-    //     }
-    // }
+        string[] texts = ResManager.Instance.LoadConfig(configName);
+        if (texts != null)
+        {
+            string[] lines = texts;
+            var methodInfo = typeof(T).GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
+            if (methodInfo != null)
+            {
+                methodInfo.Invoke(null, lines);
+                // 璁剧疆鍒濆鍖栨爣蹇�
+                var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+                if (isInitField != null)
+                {
+                    isInitField.SetValue(null, true);
+                }
+                Debug.Log($"鍔犺浇閰嶇疆: {typeof(T).Name} 鎴愬姛");
+            }
+            else
+            {
+                Debug.LogError($"閰嶇疆绫� {typeof(T).Name} 娌℃湁闈欐�両nit鏂规硶");
+            }
+        }
+        else
+        {
+            Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
+        }
+    }
 
     public float GetLoadingProgress()
     {
@@ -406,6 +292,14 @@
         ClearConfigDictionary<ActLunhuidianTypeConfig>();
         // 娓呯┖ ActSignAwardConfig 瀛楀吀
         ClearConfigDictionary<ActSignAwardConfig>();
+        // 娓呯┖ ActSignConfig 瀛楀吀
+        ClearConfigDictionary<ActSignConfig>();
+        // 娓呯┖ ActSpecialSaleConfig 瀛楀吀
+        ClearConfigDictionary<ActSpecialSaleConfig>();
+        // 娓呯┖ ActTaskConfig 瀛楀吀
+        ClearConfigDictionary<ActTaskConfig>();
+        // 娓呯┖ ActTaskTempConfig 瀛楀吀
+        ClearConfigDictionary<ActTaskTempConfig>();
         // 娓呯┖ ActTotalRechargeConfig 瀛楀吀
         ClearConfigDictionary<ActTotalRechargeConfig>();
         // 娓呯┖ ActTotalRechargeTempConfig 瀛楀吀
@@ -530,6 +424,8 @@
         ClearConfigDictionary<PriorBundleConfig>();
         // 娓呯┖ RandomNameConfig 瀛楀吀
         ClearConfigDictionary<RandomNameConfig>();
+        // 娓呯┖ RobotConfig 瀛楀吀
+        ClearConfigDictionary<RobotConfig>();
         // 娓呯┖ SignInConfig 瀛楀吀
         ClearConfigDictionary<SignInConfig>();
         // 娓呯┖ SkillSkinConfig 瀛楀吀
@@ -566,22 +462,9 @@
         ClearConfigDictionary<ZhanlingConfig>();
     }
 
-    /// <summary>
-    /// 鍙姞杞介厤缃枃鏈紝涓嶅仛瑙f瀽銆傜敤浜� WebGL 鎵归噺棰勫姞杞姐��
-    /// </summary>
-    private async UniTask<string[]> LoadConfigTextAsync(Type configType)
-    {
-        string configName = configType.Name;
-        if (configName.EndsWith("Config"))
-            configName = configName.Substring(0, configName.Length - 6);
-        return await ResManager.Instance.LoadConfigAsync(configName);
-    }
-
 #if UNITY_EDITOR
-    /// <summary>
-    /// Editor 鑷锛氬弽灏勫姞杞芥墍鏈夐厤缃被骞惰褰曡�楁椂銆�
-    /// </summary>
-    public async void SelfCheckAllConfigs()
+    [MenuItem("Tools/Config/鑷")]
+    public static void CheckAndGenerateFastConfig()
     {
         // 鑾峰彇 Editor Assembly
         var editorAsm = System.AppDomain.CurrentDomain.GetAssemblies()
@@ -622,8 +505,8 @@
         foreach (var className in checkClasses)
         {
             // 杩欓噷涔熻鐢� Editor Assembly 鑾峰彇绫诲瀷
-            var cfgType = editorAsm.GetType(className) ?? Type.GetType(className);
-            if (cfgType == null)
+            var configType = editorAsm.GetType(className) ?? Type.GetType(className);
+            if (configType == null)
             {
                 Debug.LogWarning($"[鑷] 鏈壘鍒扮被鍨�: {className}");
                 continue;
@@ -632,15 +515,15 @@
             var sw = System.Diagnostics.Stopwatch.StartNew();
 
             // 鍙嶅皠璋冪敤闈欐�両nit鏂规硶
-            string configName = cfgType.Name;
+            string configName = configType.Name;
             if (configName.EndsWith("Config"))
                 configName = configName.Substring(0, configName.Length - 6);
 
-            string[] texts = await ResManager.Instance.LoadConfigAsync(configName);
+            string[] texts = ResManager.Instance.LoadConfig(configName);
             if (texts != null)
             {
                 string[] lines = texts;
-                var methodInfo = cfgType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+                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 });
@@ -651,21 +534,21 @@
 
             if (sw.ElapsedMilliseconds >= 500)
             {
-                Debug.LogError($"[鑷] 鍔犺浇閰嶇疆 {cfgType.Name} 鑰楁椂杈冮暱: {sw.ElapsedMilliseconds} ms");
+                Debug.LogError($"[鑷] 鍔犺浇閰嶇疆 {configType.Name} 鑰楁椂杈冮暱: {sw.ElapsedMilliseconds} ms");
             }
             else if (sw.ElapsedMilliseconds <= 5)
             {
-                fastName.Add(cfgType.Name);
+                fastName.Add(configType.Name);
             }
-            Debug.Log($"[鑷] 鍔犺浇閰嶇疆: {cfgType.Name} 鐢ㄦ椂: {sw.ElapsedMilliseconds} ms");
+            Debug.Log($"[鑷] 鍔犺浇閰嶇疆: {configType.Name} 鐢ㄦ椂: {sw.ElapsedMilliseconds} ms");
         }
 
         // 閲婃斁鎵�鏈夊凡鍔犺浇鐨勯厤缃�
         foreach (var className in checkClasses)
         {
-            var cfgType = editorAsm.GetType(className) ?? Type.GetType(className);
-            if (cfgType == null) continue;
-            var methodInfo = cfgType.GetMethod("ForceRelease", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
+            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);
@@ -676,26 +559,4 @@
         Debug.Log($"[鑷] fastConfig.txt 鐢熸垚瀹屾瘯锛屽揩閫熻〃鏈夛細{string.Join(", ", fastName)}");
     }
 #endif
-
-    /// <summary>
-    /// 浠庡凡鍔犺浇鐨勬枃鏈垵濮嬪寲閰嶇疆锛堢函鍐呭瓨鎿嶄綔锛屾棤缃戠粶锛夈��
-    /// </summary>
-    private void InitConfigFromTexts(Type configType, string[] 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[] { texts });
-            var isInitField = configType.GetField("isInit",
-                System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
-            if (isInitField != null)
-                isInitField.SetValue(null, true);
-        }
-        else
-        {
-            Debug.LogError($"閰嶇疆绫� {configType.Name} 娌℃湁闈欐�両nit鏂规硶");
-        }
-    }
-
 }

--
Gitblit v1.8.0