yyl
2026-03-31 0fa617a09eedf6bdb25eda55fac1d3344859fd93
Main/Config/ConfigManager.cs
@@ -556,12 +556,18 @@
    /// </summary>
    private async UniTask<string[]> LoadConfigTextAsync(Type configType)
    {
<<<<<<< HEAD
        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()
    {
        // 获取 Editor Assembly
        var editorAsm = System.AppDomain.CurrentDomain.GetAssemblies()
            .FirstOrDefault(a => a.FullName.Contains("Editor"));
@@ -601,8 +607,8 @@
        foreach (var className in checkClasses)
        {
            // 这里也要用 Editor Assembly 获取类型
            var configType = editorAsm.GetType(className) ?? Type.GetType(className);
            if (configType == null)
            var cfgType = editorAsm.GetType(className) ?? Type.GetType(className);
            if (cfgType == null)
            {
                Debug.LogWarning($"[自检] 未找到类型: {className}");
                continue;
@@ -611,15 +617,15 @@
            var sw = System.Diagnostics.Stopwatch.StartNew();
            // 反射调用静态Init方法
            string configName = configType.Name;
            string configName = cfgType.Name;
            if (configName.EndsWith("Config"))
                configName = configName.Substring(0, configName.Length - 6);
            string[] texts = ResManager.Instance.LoadConfig(configName);
            string[] texts = await ResManager.Instance.LoadConfigAsync(configName);
            if (texts != null)
            {
                string[] lines = texts;
                var methodInfo = configType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
                var methodInfo = cfgType.GetMethod("Init", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy);
                if (methodInfo != null)
                {
                    methodInfo.Invoke(null, new object[] { lines });
@@ -630,21 +636,21 @@
            if (sw.ElapsedMilliseconds >= 500)
            {
                Debug.LogError($"[自检] 加载配置 {configType.Name} 耗时较长: {sw.ElapsedMilliseconds} ms");
                Debug.LogError($"[自检] 加载配置 {cfgType.Name} 耗时较长: {sw.ElapsedMilliseconds} ms");
            }
            else if (sw.ElapsedMilliseconds <= 5)
            {
                fastName.Add(configType.Name);
                fastName.Add(cfgType.Name);
            }
            Debug.Log($"[自检] 加载配置: {configType.Name} 用时: {sw.ElapsedMilliseconds} ms");
            Debug.Log($"[自检] 加载配置: {cfgType.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);
            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);
            if (methodInfo != null)
            {
                methodInfo.Invoke(null, null);
@@ -653,8 +659,8 @@
        System.IO.File.WriteAllText(Application.dataPath + "/fastConfig.txt", string.Join("\n", fastName));
        Debug.Log($"[自检] fastConfig.txt 生成完毕,快速表有:{string.Join(", ", fastName)}");
>>>>>>> origin/master
    }
#endif
    /// <summary>
    /// 从已加载的文本初始化配置(纯内存操作,无网络)。