获取指定配置
根据部位类型枚举、索引编号从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资源名称也要符合规律)。
确定哪些配置允许在自定义角色窗口界面使用
实际功能中,有一些部位不希望在自定义角色窗口进行使用(比如付费的皮肤),所以需要在获取指定配置之前先确定是否能够获取此类配置,需要创建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)。
将Project拖拽给ConfigSetting进行管理。
类型名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类型配置名称。