lcy
9 天以前 d29421bf1c1a5a4a3db664111efe76ef446004b1
492 武将登场 实现招募历史滚动

1. 去掉透明度相关设定
2.小于等于4条时不滚动
3.玩家只能点击不能滑动
2个文件已修改
75 ■■■■ 已修改文件
Main/System/HeroDebut/HeroDebutCallHistoryOutCell.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroDebut/HeroDebutCallWin.cs 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroDebut/HeroDebutCallHistoryOutCell.cs
@@ -3,15 +3,19 @@
public class HeroDebutCallHistoryOutCell : HeroDebutCallHistoryCell
{
    [SerializeField] ButtonEx clickButton;
    [SerializeField] CanvasGroup canvasGroup;
    float[] alphas = new float[4] { 0.45f, 0.60f, 0.80f, 1f };
    public override void Display(int index, List<HeroDebutGameRec> list)
    {
        base.Display(index, list);
        clickButton.SetListener(() => UIManager.Instance.OpenWindow<HeroDebutCallHistoryWin>());
    }
        float alpha = alphas[index];
        canvasGroup.alpha = alpha;
    // 提供给外部设置透明度的方法
    public void SetAlpha(float alpha)
    {
        if (canvasGroup != null)
        {
            canvasGroup.alpha = alpha;
        }
    }
}
Main/System/HeroDebut/HeroDebutCallWin.cs
@@ -3,6 +3,7 @@
using UnityEngine.UI;
using DG.Tweening;
using System.Linq;
using EnhancedUI.EnhancedScroller;
public class HeroDebutCallWin : UIBase
{
@@ -38,6 +39,7 @@
    [SerializeField] TextEx rankTipText;
    [SerializeField] ButtonEx rateButton;
    [SerializeField] ScrollerController scroller;
    [SerializeField] ButtonEx historyButton;
    [SerializeField] UIHeroController lhController;
    [SerializeField] UIHeroController uiHeroController;
    [SerializeField] HeroDebutCallBubbleCell[] bubbleCell;
@@ -53,6 +55,7 @@
        changeHeroButton.SetListener(() => UIManager.Instance.OpenWindow<HeroDebutCallChangeWin>());
        rankButton.SetListener(() => UIManager.Instance.OpenWindow<HeroDebutRankWin>());
        rateButton.SetListener(() => UIManager.Instance.OpenWindow<HeroDebutCallRateWin>());
        historyButton.SetListener(() => UIManager.Instance.OpenWindow<HeroDebutCallHistoryWin>());
        previewButton.SetListener(OnClickPreview);
        skipToggle.AddListener((value) =>
        {
@@ -74,7 +77,6 @@
        PackManager.Instance.RefreshItemEvent += RefreshItemEvent;
        scroller.OnRefreshCell += OnRefreshCell;
        manager.OnUpdateGameRecInfo += OnUpdateGameRecInfo;
        manager.OnUpdateHeroAppearPlayerInfoEvent += OnUpdateHeroAppearPlayerInfoEvent;
        if (manager.isSendFirst)
        {
@@ -104,6 +106,8 @@
        manager.OnUpdateGameRecInfo -= OnUpdateGameRecInfo;
        manager.OnUpdateHeroAppearPlayerInfoEvent -= OnUpdateHeroAppearPlayerInfoEvent;
    }
    // 1. 在类中声明一个全局的 Sequence 变量,用于统一管控动画
    private Sequence heroAnimSeq;
@@ -322,19 +326,70 @@
        _cell.Display(cell.index, list);
    }
    float autoScrollInterval = 2f;
    private float autoScrollTimer = 0f;
    private int currentScrollerIndex = 0;
    private bool isScrollerReady = false; // 判定标志
    void CreateScroller()
    {
        list = manager.GetLastFourRecords();
        list = manager.GetGameRecList();
        scroller.Refresh();
        int listCount = list?.Count ?? 0;
        if (list != null)
        {
            for (int i = 0; i < list.Count; i++)
            for (int i = 0; i < listCount; i++)
            {
                scroller.AddCell(ScrollerDataType.Header, i);
            }
        }
        bool canScroll = listCount > 4;// 只有数量 > 4 时才开启 Loop 和计时器
        scroller.m_Scorller.Loop = canScroll;
        isScrollerReady = canScroll;
        scroller.vertical = false;
        scroller.horizontal = false;
        scroller.Restart();
        // 如果是循环模式,确保初始位置正确
        if (canScroll)
        {
            scroller.m_Scorller.JumpToDataIndex(0,
            tweenType: EnhancedScroller.TweenType.immediate);
        }
        autoScrollTimer = 0f;
        currentScrollerIndex = 0;
    }
    private void LateUpdate()
    {
        // 只有在数据就绪且超过 4 个时,才执行计时逻辑
        if (isScrollerReady)
        {
            autoScrollTimer += Time.deltaTime;
            if (autoScrollTimer >= autoScrollInterval)
            {
                autoScrollTimer = 0f;
                AutoScrollNext();
            }
        }
    }
    private void AutoScrollNext()
    {
        if (list?.Count <= 4)
        {
            isScrollerReady = false;
            return;
        }
        currentScrollerIndex++;
        // 在 Loop 模式下进行平滑跳转
        scroller.m_Scorller.JumpToDataIndex(
            currentScrollerIndex % list.Count,
            tweenType: EnhancedScroller.TweenType.easeInOutQuad,
            tweenTime: 0.5f);
    }
}