获取指定配置

根据部位类型枚举、索引编号从AA中获取配置文件

单独封装一个静态类ConfigTool用于获取配置。

public static class ConfigTool
{
    public static string ProjectConfigName = "Project";
    public static CharacterPartConfigBase GetCharacterPartConfig(CharacterParType characterParType,int index)
    {   
        string configAssetName = string.Empty;
        switch (characterParType)
        {
            case CharacterParType.Face:
                configAssetName = "FaceConfig_";
                break;
            case CharacterParType.Hair:
                configAssetName = "HairConfig_";
                break;
            case CharacterParType.Cloth:
                configAssetName = "CLothConfig_";
                break;
        }
        configAssetName = configAssetName + index.ToString();
        return ResManager.LoadAsset<CharacterPartConfigBase>(configAssetName);
    }
}

配置文件的命名格式是有规律的,XXXConfig_+索引Index,所以如果想获取某个类型下的一种配置(比如头发1),首先要根据部位枚举类型生成对应的XXXConfig_前缀,再加上具体想要的索引即可得到对应的AA资源名称(AA资源名称也要符合规律)。

alt

确定哪些配置允许在自定义角色窗口界面使用

实际功能中,有一些部位不希望在自定义角色窗口进行使用(比如付费的皮肤),所以需要在获取指定配置之前先确定是否能够获取此类配置,需要创建ProjectConfig管理角色窗口可用的部位类型,ProjectConfig可以通过框架中的ConfigManager完成管理(ConfigManager挂载在GameRoot上随场景静态加载,配置管理器持有ConfigSetting,ConfigSetting持有ProjectConfig,也可以将ProjectConfig托管给AA动态加载)。

[CreateAssetMenu(fileName = "ProjectConfig",menuName = "Config/ProjectConfig")]
public class ProjectConfig : ConfigBase
{
    #region 自定义角色窗口
    [BoxGroup("自定义角色窗口"),LabelText("自定义角色的配置ID")]
    public Dictionary<CharacterParType, List<int>> CustomCharacterPartConfigIDDic;
    #endregion
}

注意,字典的Value是一个List,每一个部位底下可以同时允许使用多种不同的类型(头发1,头发2,头发3)。

alt

将Project拖拽给ConfigSetting进行管理。

alt

类型名Project作为从ConfigSetting中获取ProjectConfig的依据,已经在ConfigTool中定以好,方便进行修改。

        List<int> faceConfigIDList = ConfigManager.Instance.GetConfig<ProjectConfig>(ConfigTool.ProjectConfigName).CustomCharacterPartConfigIDDic[CharacterParType.Face];

        foreach (int faceConfigID in faceConfigIDList)
        {
            CharacterPartConfigBase config = ConfigTool.GetCharacterPartConfig(CharacterParType.Face, faceConfigID);
            Debug.Log(config.Name);
        }

使用以上逻辑进行测试,先获取ProjectConfig,再获取其允许使用的Face类型List,根据List和Face类型用ConfigTool从AA中获取具体的配置文件,最终输出所有允许使用的Face类型配置名称。

alt