对不同部位的UI显示进行区分完善(如头发没有辅色这一栏),目前只做不同部位UI组件的显示与否,交互事件后续完善。
//UI_CreateCharacterWindow类SetCharacterPart方法
//更新UI
if (UpdateUIView)
{
partNameText.text = partConfig.Name;
switch (parType)
{
case CharacterParType.Face:
//高度
heightSlider.transform.parent.gameObject.SetActive(true);
heightSlider.minValue = 0;
heightSlider.maxValue = 0.2f;
//尺寸
sizeSlider.transform.parent.gameObject.SetActive(true);
sizeSlider.minValue = 0.9f;
sizeSlider.maxValue = 1.1f;
//隐藏颜色选项
color1Button.gameObject.SetActive(false);
color2Button.gameObject.SetActive(false);
break;
case CharacterParType.Hair:
heightSlider.transform.parent.gameObject.SetActive(false);
sizeSlider.transform.parent.gameObject.SetActive(false);
color2Button.gameObject.SetActive(false);
//根据配置的有效性来决定是否隐藏颜色
if ((partConfig as HairConfig).ColorIndex != -1)
{
color1Button.gameObject.SetActive(true);
//TODO:让颜色按钮的图片和当前配置一样
}
else
color1Button.gameObject.SetActive(false);
break;
case CharacterParType.Cloth:
//根据配置的有效性来决定是否隐藏颜色
if ((partConfig as ClothConfig).ColorIndex != -1)
{
color1Button.gameObject.SetActive(true);
//TODO:让颜色按钮的图片和当前配置一样
}
else
color1Button.gameObject.SetActive(false);
//根据配置的有效性来决定是否隐藏颜色
if ((partConfig as ClothConfig).ColorIndex2 != -1)
{
color2Button.gameObject.SetActive(true);
//TODO:让颜色按钮的图片和当前配置一样
}
else
color2Button.gameObject.SetActive(false);
break;
}
在SetCharacterPart方法中完善更新UI逻辑,只有脸部可以更改高度和尺寸,对应需要激活Slider并设置范围,隐藏改色选项,头发和衣服支持改色对应设置激活与否,这里需要注意有的衣服/头发不支持改色,要获取配置中的ColorIndex判断是否为-1来决定是否显示改色的UI组件。
在16节部位类型选择按钮中已经完成了模型切换的逻辑,但窗口并没有进行刷新,将UI刷新逻辑放到这里调用。
public void SelectFacedeMenusTab(UI_FacadeMenus_Tab newTab)
{
if (currentFacadeMenu_Tab != null) currentFacadeMenu_Tab.UnSelect();
newTab.Select();
currentFacadeMenu_Tab = newTab;
int currIndex = characterConfigIndexDic[(int)currentFacadeMenu_Tab.CharacterParType];
//刷新界面
SetCharacterPart(currentFacadeMenu_Tab.CharacterParType, projectConfig.CustomCharacterPartConfigIDDic[currentFacadeMenu_Tab.CharacterParType][currIndex], true, false);
}
这里需要注意SetCharacterPart的第二个参数当前部位配置的索引(XX1,XX2,XX3)是在projectConfig中得到的,具体获取方式跟上节一样。
最终效果。