using UnityEngine; using UnityEngine.UI; using Cysharp.Threading.Tasks; 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 UniTask GetRankWin(); protected abstract UniTask GetAwardWin(); protected abstract UniTask GetGiftWin(); protected override async void OpenSubUIByTabIndex() { switch (functionOrder) { case 0: currentSubUI = await GetRankWin(); break; case 1: currentSubUI = await GetAwardWin(); break; case 2: // 如果后续有活动没有礼包页签,只需在子类里返回 null 或不调用即可 currentSubUI = await GetGiftWin(); break; } } }