lcy
6 小时以前 16dba0ff4d2eed7f5a4a7c37640f158ee9f73d8c
Main/System/HeroUI/HeroSkinWin.cs
@@ -156,7 +156,19 @@
        {
            tmpIndex = HeroUIManager.Instance.selectSkinIndex;
        }
        // 检查选中的非默认皮肤是否满足 OpenDay 展示条件
        if (tmpIndex > 0)
        {
            int selectedSkinID = heroConfig.SkinIDList[tmpIndex];
            if (!HeroUIManager.IsSkinOpenDayMet(selectedSkinID))
            {
                // 当前选中皮肤未到开服展示时间,回退到默认皮肤
                tmpIndex = 0;
                HeroUIManager.Instance.selectSkinIndex = 0;
            }
        }
        skinID = heroConfig.SkinIDList[tmpIndex];
        bgTexture.SetTexture2D(HeroUIManager.Instance.GetBGName(skinID, heroConfig.Country));
        roleLhModel.Create(skinID, 1, motionName: "", isLh: true);
@@ -237,14 +249,31 @@
    void CreateScroller()
    {
        skinScroller.Refresh();
        int visibleCount = 0;
        for (int i = 0; i < heroConfig.SkinIDList.Length; i++)
        {
            skinScroller.AddCell(ScrollerDataType.Header, i);
            // 默认皮肤(索引0)始终显示,非默认皮肤需满足 OpenDay 展示条件
            if (i == 0 || HeroUIManager.IsSkinOpenDayMet(heroConfig.SkinIDList[i]))
            {
                skinScroller.AddCell(ScrollerDataType.Header, i);
                visibleCount++;
            }
        }
        skinScroller.Restart();
        if (tmpIndex > 2)
        // 计算当前选中皮肤在过滤后的列表中的视觉位置
        int visualIndex = 0;
        for (int i = 0; i < heroConfig.SkinIDList.Length; i++)
        {
            skinScroller.JumpIndex(tmpIndex - 1);
            if (i == tmpIndex)
                break;
            if (i == 0 || HeroUIManager.IsSkinOpenDayMet(heroConfig.SkinIDList[i]))
                visualIndex++;
        }
        if (visualIndex > 2)
        {
            skinScroller.JumpIndex(visualIndex - 1);
        }
    }