// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 using System; using System.Collections.Generic; using UnityEngine; using FairyGUI; using NBC; using UIPanel = NBC.UIPanel; namespace NBF { public partial class CommonMenu : GLabel { public event Action OnTabChange; private UIPanel _panel; public void SetPanel(UIPanel panel) { _panel = panel; } private void OnInited() { List.onClickItem.Add(OnClickItem); BtnPrev.onClick.Add(OnClickBtnPrev); BtnNext.onClick.Add(OnClickBtnNext); InputManager.OnUICanceled += OnUICanceled; } public override void Dispose() { InputManager.OnUICanceled -= OnUICanceled; base.Dispose(); } private void OnUICanceled(string action) { if (_panel == null) return; if (!_panel.IsShowing) return; if (!_panel.IsTop) return; if (action == InputDef.UI.Prev) { OnClickBtnPrev(); } else if (action == InputDef.UI.Next) { OnClickBtnNext(); } } public void SetTabs(List tabList, int selectIndex = 0) { List.RemoveChildrenToPool(); var listWidth = 0f; for (int i = 0; i < tabList.Count; i++) { var tabData = tabList[i]; var tabItem = List.AddItemFromPool().asButton; tabItem.SetLanguage(tabData.Key); listWidth += tabItem.width; if (i > 0) { listWidth += List.columnGap; } } Log.Info($"Set tab index={List.selectedIndex}"); List.selectedIndex = selectIndex; List.width = listWidth; OnClickItem(); } private void OnClickItem() { OnTabChange?.Invoke(List.selectedIndex); } private void OnClickBtnPrev() { if (List.selectedIndex > 0) { List.selectedIndex -= 1; } else { List.selectedIndex = List.numItems - 1; } OnClickItem(); } private void OnClickBtnNext() { if (List.selectedIndex < List.numItems - 1) { List.selectedIndex += 1; } else { List.selectedIndex = 0; } OnClickItem(); } } }