// 本脚本只在不存在时会生成一次。已存在不会再次生成覆盖 using System.Collections.Generic; using FairyGUI; using NBC; using UIPanel = NBC.UIPanel; namespace NBF { public class ShopGearData { public string title; } public partial class FishingShopPanel : UIPanel { private List _tabList = new List(); private TabListAndSubListData _currentTab; protected override void OnInit() { base.OnInit(); this.AutoAddClick(OnClick); IsShowCursor = true; for (int i = 0; i < 10; i++) { var itemData = new TabListAndSubListData(); itemData.AddTestData(i); _tabList.Add(itemData); } Menu.OnTabChange += ChangeTab; SubMenu.OnTabChange += ChangeSubTab; List.OnClickItem += OnClickItem; } protected override void OnShow() { base.OnShow(); Menu.SetTabs(_tabList); UseBottomMenu(); } private void UseBottomMenu() { BottomMenu.Use(this); } private void ChangeTab(int index) { Log.Info($"Change tab index={index}"); var tabListData = _tabList[index]; _currentTab = tabListData; SubMenu.SetTabs(_currentTab.SubTab); } private void ChangeSubTab(int index) { var subList = _currentTab.SubTab[index]; List.SetListData(subList.Items); } private void OnClickItem(object item) { if (item is not ShopGearItem shopGearItem) return; Log.Info($"click item ={shopGearItem.GearData.title}"); } private void OnClick(GComponent btn) { // if (btn == BtnClose) // { // Hide(); // } } protected override void OnDestroy() { base.OnDestroy(); Menu.OnTabChange -= ChangeTab; SubMenu.OnTabChange -= ChangeSubTab; } } }