using System.Collections.Generic; using System.Linq; using Cysharp.Threading.Tasks; using LitJson; using UnityEngine; using UnityEngine.UI; public class QYAchievementWin : UIBase { [SerializeField] ScrollerController scroller; [SerializeField] Button closeBtn; protected override void InitComponent() { closeBtn.AddListener(() => { CloseWindow(); }); } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; QunyingManager.Instance.OnUpdateQunyingInfoEvent += OnUpdateQunyingInfo; scroller.Refresh(); var keys = QunyingManager.Instance.achievementAwards.Keys.ToList(); keys.Sort(); int jumpIndex = 0; for (int i = 0; i < keys.Count; i++) { scroller.AddCell(ScrollerDataType.Header, keys[i]); if (QunyingManager.Instance.GetAchievementState(keys[i]) == 1) { jumpIndex = i; } } scroller.Restart(); scroller.JumpIndex(jumpIndex - 5); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; QunyingManager.Instance.OnUpdateQunyingInfoEvent -= OnUpdateQunyingInfo; } private void OnRefreshCell(ScrollerDataType type, CellView cellView) { var cell = cellView as QYAchievementCell; cell.Display(cell.index); } void OnUpdateQunyingInfo() { scroller.m_Scorller.RefreshActiveCellViews(); } }