using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 多页签界面,管理子界面 /// public abstract class FunctionsBaseWin : UIBase { // 标签按钮组 public GroupButtonEx[] tabButtons; // 当前打开的子界面 protected UIBase currentSubUI; /// /// 初始化组件 /// protected override void InitComponent() { // 初始化UI组件事件 InitButtonEvents(); } protected override void OnPreOpen() { // 默认选中第一个标签 SelectBottomTab(functionOrder); } protected override void OnPreClose() { CloseCurrentSubUI(); } /// /// 初始化UI组件事件 /// private void InitButtonEvents() { // 初始化底部按钮 for (int i = 0; i < tabButtons.Length; i++) { int index = i; tabButtons[i].AddListener(() => { OnTabButtonClicked(index); }); } } /// /// 选择标签 /// protected virtual void SelectBottomTab(int index) { // 如果点击当前已选中的标签,不做处理 if (functionOrder == index && currentSubUI != null) { return; } // 更新当前选中的标签索引 functionOrder = index; // 关闭当前打开的子界面 CloseCurrentSubUI(); // 根据选中的标签打开对应的界面 OpenSubUIByTabIndex(); } /// /// 关闭当前打开的子界面 /// protected void CloseCurrentSubUI() { if (currentSubUI != null) { // 关闭当前界面 currentSubUI.CloseWindow(); currentSubUI = null; } } /// /// 根据标签索引打开对应的子界面 /// protected abstract void OpenSubUIByTabIndex(); /// /// 标签按钮点击 /// protected virtual void OnTabButtonClicked(int index) { SelectBottomTab(index); } }