73 lines
2.0 KiB
C#
73 lines
2.0 KiB
C#
// 本脚本只在不存在时会生成一次。组件逻辑写在当前脚本内。已存在不会再次生成覆盖
|
|
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using FairyGUI;
|
|
using NBC;
|
|
|
|
namespace NBF
|
|
{
|
|
public partial class CommonItemList : GComponent
|
|
{
|
|
private List<TabItemData> _tabList = new List<TabItemData>();
|
|
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<T>(List<T> list) where T : class
|
|
{
|
|
_tabList.Clear();
|
|
_currentTab = null;
|
|
var tabList = ItemDataHelper.GetItemTabDataList(list);
|
|
style.selectedIndex = 0; //一级菜单
|
|
foreach (var tabItemData in tabList)
|
|
{
|
|
if (tabItemData.Children.Count > 0)
|
|
{
|
|
style.selectedIndex = 1; //有二级菜单
|
|
break;
|
|
}
|
|
}
|
|
|
|
_tabList.AddRange(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)
|
|
{
|
|
}
|
|
}
|
|
} |