// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖 using System.Collections.Generic; using System.Linq; using UnityEngine; using FairyGUI; using NBC; namespace NBF { public partial class CommonItemList : GComponent { private List _tabList = new List(); private TabItemData _currentTab; private void OnInited() { Menu.OnTabChange += ChangeTab; SubMenu.OnTabChange += ChangeSubTab; List.OnClickItem += OnClickItem; } public override void Dispose() { Menu.OnTabChange -= ChangeTab; SubMenu.OnTabChange -= ChangeSubTab; List.OnClickItem -= OnClickItem; base.Dispose(); } /// /// /// /// /// 是否显示全部页签 /// 是否列表页显示分类标题 public void SetData(List tabItemList, bool showAll = false, bool showListTitle = true) { _tabList.Clear(); _currentTab = null; style.selectedIndex = 0; //一级菜单 if (tabItemList.Any(tabItem => tabItem.Children.Count > 0)) { style.selectedIndex = 1; //有二级菜单 } _tabList.AddRange(tabItemList); if (showAll) { _tabList.AddAllTabItem(showListTitle); } Menu.SetTabs(_tabList); } private void ChangeTab(int index) { var tabListData = _tabList[index]; _currentTab = tabListData; if (style.selectedIndex == 0) { //只有一级菜单 List.SetListData(_currentTab.Items); } else { SubMenu.SetTabs(_currentTab.Children); } } private void ChangeSubTab(int index) { var subList = _currentTab.Children[index]; List.SetListData(subList.Items); } private void OnClickItem(object item) { } } }