yyl
2026-02-11 3f2cd27c5dfb3b450245bf1a37fc1b3414031c7c
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} 没有静态Init方法");
            }
        }
        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;