Files
Fishing2/Assets/Scripts/UI/Home/HomePanel.cs
2025-06-03 14:28:20 +08:00

96 lines
2.3 KiB
C#

// 本脚本只在不存在时会生成一次。已存在不会再次生成覆盖
using System.Collections.Generic;
using FairyGUI;
using UnityEngine;
using NBC;
using UIPanel = NBC.UIPanel;
namespace NBF
{
public partial class HomePanel : UIPanel
{
public override string UIPackName => "Main";
public override string UIResName => "HomePanel";
private string[] PageNames = new[] { "HomeMainPage", "HomeActivityPage", "HomeRankPage" };
private List<HomePageBase> _pages = new List<HomePageBase>();
private HomePageBase _currentPage;
private List<TabListData> tabList = new List<TabListData>();
protected override void OnInit()
{
base.OnInit();
foreach (var group in PageNames)
{
var tab = new TabListData
{
Name = group
};
tabList.Add(tab);
}
Menu.OnTabChange += ChangeTab;
}
protected override void OnShow()
{
Menu.SetTabs(tabList);
ChangeTab(0);
}
#region Tab切换
private void ChangeTab(int index)
{
if (index < 0) return;
Log.Info($"Change tab index={index}");
foreach (var page in _pages)
{
page.Hide();
}
var nowPage = GetPage(index);
if (nowPage != null)
{
nowPage.Show();
_currentPage = nowPage;
}
}
private HomePageBase GetPage(int index)
{
var page = _pages.Find(t => t.Page == index);
if (page == null)
{
var pageName = PageNames[index];
var pageObject = UIPackage.CreateObject(UIPackName, pageName);
if (pageObject is HomePageBase homePage)
{
Pages.AddChild(homePage);
_pages.Add(homePage);
return homePage;
}
return null;
}
return page;
}
#endregion
protected override void OnHide()
{
}
protected override void OnDestroy()
{
base.OnDestroy();
}
}
}