View层持有部位配置
持有数据
在UI窗口更新模型中,之前的逻辑有可以合并的部分,修改颜色可以直接让CharacterCreator->Player_View去做。
但是,要修改成的颜色需要从CustomCharacterData中获取,而这份数据是由窗口持有的,所以需要将其传给Player_View。
//Player_View
private CustomCharacterData customCharacter; //玩家自定义的角色数据-用于持久化
public void InitData(CustomCharacterData customCharacter)
{
this.customCharacter = customCharacter;
}
//CharacterCreator
public void InitData(CustomCharacterData customCharacter)
{
player_View.Init();
player_View.InitData(customCharacter);
}
//UI_CreateCharacterWindow
//TODO: 临时在这初始化
CharacterCreator.Instance.InitData(customCharacterData);
通过UI窗口初始化把数据传给模型Controller再传给View来实现Player_View持有数据,这样就可以直接在Player_View中拿到数据修改颜色。
但需要注意的是,实际上数据的初始化和保存应该由专门的否则持久化的类来完成,这里只是为了方便调试,将数据的持有和初始化都交给UI窗口。
View持有配置
为了方便AA卸载配置资源,现在Player_View中做好配置资源的定义和准备。
private Dictionary<int, CharacterPartConfigBase> characterPartDic = new Dictionary<int,CharacterPartConfigBase>();
/// <summary>
/// 设置部位
/// </summary>
public void SetPart(CharacterPartConfigBase characterPartConfig)
{
if (characterPartDic.ContainsKey((int)characterPartConfig.CharacterParType))
{
//TODO:卸载旧配置的资源
characterPartDic[(int)characterPartConfig.CharacterParType] = characterPartConfig;
}
else
{
characterPartDic.Add((int)characterPartConfig.CharacterParType,characterPartConfig);
}
.......
}
在实际切换部位时,完成旧部位配置资源的卸载(修改颜色不需要卸载配置资源)。