using UnityEngine; using UnityEngine.UI; public abstract class OSActivityBaseWin : FunctionsBaseWin { [SerializeField] protected Button closBtn; protected override void InitComponent() { base.InitComponent(); if (closBtn != null) { closBtn.AddListener(CloseWindow); } } // 由子类实现:当前活动的 RankType protected abstract int GetRankType(); // 由子类实现:实例化对应的三个子窗口 protected abstract UIBase GetRankWin(); protected abstract UIBase GetAwardWin(); protected abstract UIBase GetGiftWin(); protected override void OpenSubUIByTabIndex() { switch (functionOrder) { case 0: RankModel.Instance.ResetQueryParam(); RankModel.Instance.QueryRankByPage(GetRankType(), watchID: (int)PlayerDatas.Instance.baseData.PlayerID); currentSubUI = GetRankWin(); break; case 1: currentSubUI = GetAwardWin(); break; case 2: // 如果后续有活动没有礼包页签,只需在子类里返回 null 或不调用即可 currentSubUI = GetGiftWin(); break; } } }