From 485db99b5c51a971c173664cf6e808dc8424b0a0 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期五, 17 十月 2025 17:19:51 +0800
Subject: [PATCH] 136 子 【挑战】战锤秘境 / 【挑战】战锤秘境-客户端 移除错误接入
---
Main/Config/ConfigManager.cs | 649 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 391 insertions(+), 258 deletions(-)
diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index bbed737..11a4bcf 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -1,258 +1,391 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
-using Cysharp.Threading.Tasks;
-using System.Reflection;
-
-
-public class ConfigManager : ManagerBase<ConfigManager>
-{
- public bool isLoadFinished
- {
- get;
- private set;
- }
-
- private float loadingProgress = 0f;
-
- public override void Init()
- {
- base.Init();
- InitConfigs();
- }
-
- public virtual async UniTask InitConfigs()
- {
- // 鍔犺浇閰嶇疆鏂囦欢
- await LoadConfigs();
- }
-
- protected async UniTask LoadConfigs()
- {
- loadingProgress = 0f;
- isLoadFinished = false;
-
- // 鍔犺浇閰嶇疆鏂囦欢
- int totalConfigs = 41;
- Type[] configTypes = new Type[] {
- typeof(AppointItemConfig),
- typeof(AudioConfig),
- typeof(ChestsAwardConfig),
- typeof(ChestsConfig),
- typeof(CTGConfig),
- typeof(CTGSelectItemConfig),
- typeof(DienstgradConfig),
- typeof(DirtyWordConfig),
- typeof(EffectConfig),
- typeof(EmojiPackConfig),
- typeof(FaceConfig),
- typeof(FamilyConfig),
- typeof(FuncConfigConfig),
- typeof(FuncOpenLVConfig),
- typeof(FunctionTeamSetConfig),
- typeof(GetItemWaysConfig),
- typeof(GmCmdConfig),
- typeof(GuideConfig),
- typeof(IconConfig),
- //typeof(InitialFunctionConfig),
- typeof(ItemConfig),
- typeof(KickOutReasonConfig),
- typeof(LanguageConfig),
- typeof(MailConfig),
- typeof(NPCConfig),
- typeof(NPCExConfig),
- typeof(OrderInfoConfig),
- typeof(PlayerFaceConfig),
- typeof(PlayerFacePicConfig),
- typeof(PlayerFacePicStarConfig),
- typeof(PlayerFaceStarConfig),
- typeof(PlayerLVConfig),
- typeof(priorbundleConfig),
- //typeof(PriorLanguageConfig),
- typeof(RichTextMsgReplaceConfig),
- typeof(RuleConfig),
- typeof(SkillConfig),
- typeof(StoreConfig),
- typeof(SuccessConfig),
- typeof(SysInfoConfig),
- typeof(TitleStarUpConfig)
- };
-
- // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
- for (int i = 0; i < configTypes.Length; i++)
- {
- await LoadConfigByType(configTypes[i]);
- loadingProgress = (float)(i + 1) / totalConfigs;
- }
-
- // 鍔犺浇瀹屾垚鍚庤缃甶sLoadFinished涓簍rue
- loadingProgress = 1f;
- isLoadFinished = true;
- }
-
- public async UniTask 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[] lines = textAsset.text.Split('\n');
- 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}");
- }
- }
-
- private async UniTask LoadConfig<T>() where T : class
- {
- string configName = typeof(T).Name;
-
- TextAsset textAsset = ResManager.Instance.LoadAsset<TextAsset>("Config", configName);
- if (textAsset != null)
- {
- string[] lines = textAsset.text.Split('\n');
- 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()
- {
- return loadingProgress;
- }
-
- private void ClearConfigDictionary<T>() where T : class
- {
- // 閲嶇疆 T 鍒濆鍖栫姸鎬�
- var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
- if (isInitField != null)
- {
- isInitField.SetValue(null, false);
- }
- }
-
- public override void Release()
- {
- // 娓呯┖ AppointItemConfig 瀛楀吀
- ClearConfigDictionary<AppointItemConfig>();
- // 娓呯┖ AudioConfig 瀛楀吀
- ClearConfigDictionary<AudioConfig>();
- // 娓呯┖ ChestsAwardConfig 瀛楀吀
- ClearConfigDictionary<ChestsAwardConfig>();
- // 娓呯┖ ChestsConfig 瀛楀吀
- ClearConfigDictionary<ChestsConfig>();
- // 娓呯┖ CTGConfig 瀛楀吀
- ClearConfigDictionary<CTGConfig>();
- // 娓呯┖ CTGSelectItemConfig 瀛楀吀
- ClearConfigDictionary<CTGSelectItemConfig>();
- // 娓呯┖ DienstgradConfig 瀛楀吀
- ClearConfigDictionary<DienstgradConfig>();
- // 娓呯┖ DirtyWordConfig 瀛楀吀
- ClearConfigDictionary<DirtyWordConfig>();
- // 娓呯┖ EffectConfig 瀛楀吀
- ClearConfigDictionary<EffectConfig>();
- // 娓呯┖ EmojiPackConfig 瀛楀吀
- ClearConfigDictionary<EmojiPackConfig>();
- // 娓呯┖ FaceConfig 瀛楀吀
- ClearConfigDictionary<FaceConfig>();
- // 娓呯┖ FamilyConfig 瀛楀吀
- ClearConfigDictionary<FamilyConfig>();
- // 娓呯┖ FuncConfigConfig 瀛楀吀
- ClearConfigDictionary<FuncConfigConfig>();
- // 娓呯┖ FuncOpenLVConfig 瀛楀吀
- ClearConfigDictionary<FuncOpenLVConfig>();
- // 娓呯┖ FunctionTeamSetConfig 瀛楀吀
- ClearConfigDictionary<FunctionTeamSetConfig>();
- // 娓呯┖ GetItemWaysConfig 瀛楀吀
- ClearConfigDictionary<GetItemWaysConfig>();
- // 娓呯┖ GmCmdConfig 瀛楀吀
- ClearConfigDictionary<GmCmdConfig>();
- // 娓呯┖ GuideConfig 瀛楀吀
- ClearConfigDictionary<GuideConfig>();
- // 娓呯┖ IconConfig 瀛楀吀
- ClearConfigDictionary<IconConfig>();
- // 娓呯┖ InitialFunctionConfig 瀛楀吀
- ClearConfigDictionary<InitialFunctionConfig>();
- // 娓呯┖ ItemConfig 瀛楀吀
- ClearConfigDictionary<ItemConfig>();
- // 娓呯┖ KickOutReasonConfig 瀛楀吀
- ClearConfigDictionary<KickOutReasonConfig>();
- // 娓呯┖ LanguageConfig 瀛楀吀
- ClearConfigDictionary<LanguageConfig>();
- // 娓呯┖ MailConfig 瀛楀吀
- ClearConfigDictionary<MailConfig>();
- // 娓呯┖ NPCConfig 瀛楀吀
- ClearConfigDictionary<NPCConfig>();
- // 娓呯┖ NPCExConfig 瀛楀吀
- ClearConfigDictionary<NPCExConfig>();
- // 娓呯┖ OrderInfoConfig 瀛楀吀
- ClearConfigDictionary<OrderInfoConfig>();
- // 娓呯┖ PlayerFaceConfig 瀛楀吀
- ClearConfigDictionary<PlayerFaceConfig>();
- // 娓呯┖ PlayerFacePicConfig 瀛楀吀
- ClearConfigDictionary<PlayerFacePicConfig>();
- // 娓呯┖ PlayerFacePicStarConfig 瀛楀吀
- ClearConfigDictionary<PlayerFacePicStarConfig>();
- // 娓呯┖ PlayerFaceStarConfig 瀛楀吀
- ClearConfigDictionary<PlayerFaceStarConfig>();
- // 娓呯┖ PlayerLVConfig 瀛楀吀
- ClearConfigDictionary<PlayerLVConfig>();
- // 娓呯┖ priorbundleConfig 瀛楀吀
- ClearConfigDictionary<priorbundleConfig>();
- // 娓呯┖ PriorLanguageConfig 瀛楀吀
- ClearConfigDictionary<PriorLanguageConfig>();
- // 娓呯┖ RichTextMsgReplaceConfig 瀛楀吀
- ClearConfigDictionary<RichTextMsgReplaceConfig>();
- // 娓呯┖ RuleConfig 瀛楀吀
- ClearConfigDictionary<RuleConfig>();
- // 娓呯┖ SkillConfig 瀛楀吀
- ClearConfigDictionary<SkillConfig>();
- // 娓呯┖ StoreConfig 瀛楀吀
- ClearConfigDictionary<StoreConfig>();
- // 娓呯┖ SuccessConfig 瀛楀吀
- ClearConfigDictionary<SuccessConfig>();
- // 娓呯┖ SysInfoConfig 瀛楀吀
- ClearConfigDictionary<SysInfoConfig>();
- // 娓呯┖ TitleStarUpConfig 瀛楀吀
- ClearConfigDictionary<TitleStarUpConfig>();
- }
-}
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using Cysharp.Threading.Tasks;
+using System.Reflection;
+using System.Linq;
+
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+public class ConfigManager : ManagerBase<ConfigManager>
+{
+ public bool isLoadFinished
+ {
+ get;
+ private set;
+ }
+
+ private float loadingProgress = 0f;
+
+ public override void Init()
+ {
+ base.Init();
+ InitConfigs();
+ }
+
+ public virtual async UniTask InitConfigs()
+ {
+ // 鍔犺浇閰嶇疆鏂囦欢
+ await LoadConfigs();
+ }
+
+ protected async UniTask LoadConfigs()
+ {
+ loadingProgress = 0f;
+ isLoadFinished = false;
+
+ // 鍔犺浇閰嶇疆鏂囦欢
+ HashSet<Type> configTypes = new HashSet<Type>() {
+ typeof(ADAwardConfig),
+ typeof(ChestsAwardConfig),
+ typeof(CTGConfig),
+ typeof(DamageNumConfig),
+ typeof(DirtyWordConfig),
+ typeof(DungeonConfig),
+ typeof(DungeonOpenTimeConfig),
+ typeof(FaceConfig),
+ typeof(FightPowerRatioConfig),
+ typeof(FirstChargeConfig),
+ typeof(GoldRushCampConfig),
+ typeof(GoldRushItemConfig),
+ typeof(GoldRushWorkerConfig),
+ typeof(HeroLineupHaloConfig),
+ typeof(HeroQualityLVConfig),
+ typeof(InvestConfig),
+ typeof(ItemConfig),
+ typeof(MainChapterConfig),
+ typeof(MainLevelConfig),
+ typeof(NPCConfig),
+ typeof(NPCExConfig),
+ typeof(NPCLineupConfig),
+ typeof(OrderInfoConfig),
+ typeof(PlayerAttrConfig),
+ typeof(PlayerFaceConfig),
+ typeof(PriorBundleConfig),
+ typeof(StoreConfig),
+ typeof(SuccessConfig),
+ typeof(SysInfoConfig),
+ typeof(TitleStarUpConfig),
+ typeof(TreasureSetConfig),
+ typeof(TreeLVConfig),
+ typeof(WindowSearchConfig),
+ typeof(XBGetItemConfig)
+ };
+
+#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;
+
+ // 閫愪釜鍔犺浇閰嶇疆骞舵洿鏂拌繘搴�
+ 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 void LoadConfigByType(Type configType)
+ {
+ 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 });
+ // 璁剧疆鍒濆鍖栨爣蹇�
+ 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}");
+ }
+ }
+
+ private async UniTask LoadConfig<T>() where T : class
+ {
+ string configName = typeof(T).Name;
+
+ 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()
+ {
+ return loadingProgress;
+ }
+
+ private void ClearConfigDictionary<T>() where T : class
+ {
+ // 閲嶇疆 T 鍒濆鍖栫姸鎬�
+ var isInitField = typeof(T).GetField("isInit", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
+ if (isInitField != null)
+ {
+ isInitField.SetValue(null, false);
+ }
+ }
+
+ public override void Release()
+ {
+ // 娓呯┖ ADAwardConfig 瀛楀吀
+ ClearConfigDictionary<ADAwardConfig>();
+ // 娓呯┖ ChestsAwardConfig 瀛楀吀
+ ClearConfigDictionary<ChestsAwardConfig>();
+ // 娓呯┖ CTGConfig 瀛楀吀
+ ClearConfigDictionary<CTGConfig>();
+ // 娓呯┖ DamageNumConfig 瀛楀吀
+ ClearConfigDictionary<DamageNumConfig>();
+ // 娓呯┖ DirtyWordConfig 瀛楀吀
+ ClearConfigDictionary<DirtyWordConfig>();
+ // 娓呯┖ DungeonConfig 瀛楀吀
+ ClearConfigDictionary<DungeonConfig>();
+ // 娓呯┖ DungeonOpenTimeConfig 瀛楀吀
+ ClearConfigDictionary<DungeonOpenTimeConfig>();
+ // 娓呯┖ FaceConfig 瀛楀吀
+ ClearConfigDictionary<FaceConfig>();
+ // 娓呯┖ FightPowerRatioConfig 瀛楀吀
+ ClearConfigDictionary<FightPowerRatioConfig>();
+ // 娓呯┖ FirstChargeConfig 瀛楀吀
+ ClearConfigDictionary<FirstChargeConfig>();
+ // 娓呯┖ GoldRushCampConfig 瀛楀吀
+ ClearConfigDictionary<GoldRushCampConfig>();
+ // 娓呯┖ GoldRushItemConfig 瀛楀吀
+ ClearConfigDictionary<GoldRushItemConfig>();
+ // 娓呯┖ GoldRushWorkerConfig 瀛楀吀
+ ClearConfigDictionary<GoldRushWorkerConfig>();
+ // 娓呯┖ HeroLineupHaloConfig 瀛楀吀
+ ClearConfigDictionary<HeroLineupHaloConfig>();
+ // 娓呯┖ HeroQualityLVConfig 瀛楀吀
+ ClearConfigDictionary<HeroQualityLVConfig>();
+ // 娓呯┖ InvestConfig 瀛楀吀
+ ClearConfigDictionary<InvestConfig>();
+ // 娓呯┖ ItemConfig 瀛楀吀
+ ClearConfigDictionary<ItemConfig>();
+ // 娓呯┖ MainChapterConfig 瀛楀吀
+ ClearConfigDictionary<MainChapterConfig>();
+ // 娓呯┖ MainLevelConfig 瀛楀吀
+ ClearConfigDictionary<MainLevelConfig>();
+ // 娓呯┖ NPCConfig 瀛楀吀
+ ClearConfigDictionary<NPCConfig>();
+ // 娓呯┖ NPCExConfig 瀛楀吀
+ ClearConfigDictionary<NPCExConfig>();
+ // 娓呯┖ NPCLineupConfig 瀛楀吀
+ ClearConfigDictionary<NPCLineupConfig>();
+ // 娓呯┖ OrderInfoConfig 瀛楀吀
+ ClearConfigDictionary<OrderInfoConfig>();
+ // 娓呯┖ PlayerAttrConfig 瀛楀吀
+ ClearConfigDictionary<PlayerAttrConfig>();
+ // 娓呯┖ PlayerFaceConfig 瀛楀吀
+ ClearConfigDictionary<PlayerFaceConfig>();
+ // 娓呯┖ PriorBundleConfig 瀛楀吀
+ ClearConfigDictionary<PriorBundleConfig>();
+ // 娓呯┖ StoreConfig 瀛楀吀
+ ClearConfigDictionary<StoreConfig>();
+ // 娓呯┖ SuccessConfig 瀛楀吀
+ ClearConfigDictionary<SuccessConfig>();
+ // 娓呯┖ SysInfoConfig 瀛楀吀
+ ClearConfigDictionary<SysInfoConfig>();
+ // 娓呯┖ TitleStarUpConfig 瀛楀吀
+ ClearConfigDictionary<TitleStarUpConfig>();
+ // 娓呯┖ TreasureSetConfig 瀛楀吀
+ ClearConfigDictionary<TreasureSetConfig>();
+ // 娓呯┖ TreeLVConfig 瀛楀吀
+ ClearConfigDictionary<TreeLVConfig>();
+ // 娓呯┖ WindowSearchConfig 瀛楀吀
+ ClearConfigDictionary<WindowSearchConfig>();
+ // 娓呯┖ XBGetItemConfig 瀛楀吀
+ ClearConfigDictionary<XBGetItemConfig>();
+ }
+
+#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