From 3f2cd27c5dfb3b450245bf1a37fc1b3414031c7c Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 11 二月 2026 11:03:58 +0800
Subject: [PATCH] 小游戏适配 资源系统改造

---
 Main/Config/ConfigManager.cs |   42 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 41 insertions(+), 1 deletions(-)

diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index dfac8d5..1f6c3ba 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -22,7 +22,7 @@
     public override void Init()
     {
         base.Init();
-        InitConfigs();
+        InitConfigs().Forget();
     }
 
     public virtual async UniTask InitConfigs()
@@ -181,7 +181,9 @@
         {
             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;
@@ -208,11 +210,47 @@
         }
     }
 
+    /// <summary>
+    /// US2: Async variant of LoadConfigByType. Uses UniTask-based config loading.
+    /// </summary>
+    public async UniTask LoadConfigByTypeAsync(Type configType)
+    {
+        string configName = configType.Name;
+        if (configName.EndsWith("Config"))
+        {
+            configName = configName.Substring(0, configName.Length - 6);
+        }
+        string[] texts = await ResManager.Instance.LoadConfigAsync(configName);
+        if (texts != null)
+        {
+            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鏂规硶");
+            }
+        }
+        else
+        {
+            Debug.LogError($"鎵句笉鍒伴厤缃枃浠�: {configName}");
+        }
+    }
+
     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;
@@ -453,7 +491,9 @@
             if (configName.EndsWith("Config"))
                 configName = configName.Substring(0, configName.Length - 6);
 
+            #pragma warning disable CS0618
             string[] texts = ResManager.Instance.LoadConfig(configName);
+            #pragma warning restore CS0618
             if (texts != null)
             {
                 string[] lines = texts;

--
Gitblit v1.8.0