对不同部位的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组件。

alt

在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中得到的,具体获取方式跟上节一样。

alt

最终效果。