# ⚙️ ConfigLoader 配置加载模块

此模块负责配置文件的加载与检测，依赖于 `Common` 通用模块，请确保已安装该模块。

### 主要功能

- 📂 配置文件加载
- 🔍 配置字段缺失检测
- ❌ 配置字段冗余检测
- ⚙️ 自动化插件安装
- 📝 日志标准化输出

------

## ⚠️ 注意事项

导入项目后，会弹出插件安装提示框。点击“确定”后，插件将自动安装；若点击“取消”，脚本重新编译时仍会再次弹出提示。

- 插件安装需要一定时间，请耐心等待。安装完成后会有弹窗提示。
- 安装完成后，会自动生成配置文件夹 `Configs`，请将游戏配置文件复制到此文件夹中。
- **请勿修改配置文件名**。如需替换配置文件，请先删除旧文件，确保文件夹中每个配置只有一份。
- 游戏首次运行时，会自动将该文件夹复制到游戏的数据存储位置。

------

## 🚀 使用指南

在登录成功后，调用 `ConfigLoader` 的 `Init` 方法传入所需参数，具体参数请查看方法注释。

> 注意：
>
> - **List 类型**的配置需继承 `ConfigModel<T, T0>`，不再需要之前的 `IDataList` 接口。
> - **非 List 类型**配置继承 `ConfigModel<T>`。

### 初始化示例

```csharp
var loginModel = NetworkKit.Instance.GetLoginModel();
ConfigLoader.Instance.Init(
    loginModel.setting,
    loginModel.cdn_url,
    new List<ConfigModel> {
        new CommonModel("Common"),
        new SignDailyRewardModel("SignDailyReward"),
        new TurntableModel("turntable"),
        // 其它配置...
    },
    state => {
        Debug.Log($"配置加载状态: {state}");
    },
    (errorName, message) => {
        Debug.LogError($"配置解析错误: {errorName}，错误信息：{message}");
    });
```

------

## 🔍 读取配置示例

```csharp
// 读取基础配置
var model = ConfigLoader.Instance.GetConfig<CommonModel>();

// 解析自定义配置
ConfigLoader.Instance.ParesPersonalizedConfig(new PrizeWheelDataModel("PrizeWheelData"), "prize");

// 获取自定义配置
var personalizedConfig = ConfigLoader.Instance.GetPersonalizedConfig<PrizeWheelDataModel>("prize");
```

