87 lines
2.8 KiB
Lua
87 lines
2.8 KiB
Lua
|
--===========================
|
||
|
--超级爬塔主要页面子面板控制集成控件
|
||
|
--===========================
|
||
|
local XUiSTMainPage = XClass(nil, "XUiSTMainPage")
|
||
|
|
||
|
function XUiSTMainPage:Ctor(RootUi)
|
||
|
self.RootUi = RootUi
|
||
|
end
|
||
|
--====================================
|
||
|
--根据子面板名<->序号字典,和脚本统一父路径注册所有子面板
|
||
|
--@param panelDic:枚举字典{Key = 子面板名, Value = 子面板序号}
|
||
|
--@param scriptPath:所有子面板统一父路径
|
||
|
--所有子面板脚本取名都应为 父路径 + Key + "Panel"
|
||
|
--所有子面板GameObject/Transform都应在RootUi中使用"Panel" + Key的名字来索引
|
||
|
--====================================
|
||
|
function XUiSTMainPage:RegisterChildPanels(panelDic, scriptPath)
|
||
|
if not self.ChildPanel then self.ChildPanel = {} end
|
||
|
for key, index in pairs(panelDic) do
|
||
|
local script = require(scriptPath .. key .. "Panel")
|
||
|
if script and type(script) == "table" then
|
||
|
self.ChildPanel[index] = script.New(self.RootUi["Panel" .. key], self.RootUi)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
--========================
|
||
|
--根据显示面板序号字典来显隐所有子面板
|
||
|
--@param showIndexDic:{Key = 子面板序号, Value = true or nil/false面板显隐}
|
||
|
--序号字典中没有包含的子面板会被默认隐藏
|
||
|
--========================
|
||
|
function XUiSTMainPage:ShowChildPanel(showIndexDic)
|
||
|
for index, panel in pairs(self.ChildPanel) do
|
||
|
if showIndexDic[index]then
|
||
|
panel:ShowPanel()
|
||
|
else
|
||
|
panel:HidePanel()
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
--========================
|
||
|
--显示所有面板
|
||
|
--========================
|
||
|
function XUiSTMainPage:ShowAllPanels()
|
||
|
self:AllDoFunction("ShowPanel")
|
||
|
end
|
||
|
--========================
|
||
|
--根据子面板序号获取子面板
|
||
|
--========================
|
||
|
function XUiSTMainPage:GetChildPanelByIndex(index)
|
||
|
return self.ChildPanel[index]
|
||
|
end
|
||
|
--========================
|
||
|
--根据子面板序号和方法名调用子面板控件方法
|
||
|
--@param index:子面板序号
|
||
|
--@param funcName:方法名
|
||
|
--@param ... :方法需要使用的所有参数
|
||
|
--========================
|
||
|
function XUiSTMainPage:DoFunction(index, funcName, ...)
|
||
|
local panel = self.ChildPanel[index]
|
||
|
if panel and panel[funcName] then
|
||
|
return panel[funcName](panel, ...)
|
||
|
end
|
||
|
end
|
||
|
--========================
|
||
|
--根据方法名调用所有子面板控件方法(通常用于模拟UI生命周期)
|
||
|
--@param funcName:方法名
|
||
|
--========================
|
||
|
function XUiSTMainPage:AllDoFunction(funcName)
|
||
|
for _, panel in pairs(self.ChildPanel) do
|
||
|
if panel[funcName] then
|
||
|
panel[funcName](panel)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XUiSTMainPage:OnEnable()
|
||
|
self:AllDoFunction("OnEnable")
|
||
|
end
|
||
|
|
||
|
function XUiSTMainPage:OnDisable()
|
||
|
self:AllDoFunction("OnDisable")
|
||
|
end
|
||
|
|
||
|
function XUiSTMainPage:OnDestroy()
|
||
|
self:AllDoFunction("OnDestroy")
|
||
|
end
|
||
|
|
||
|
return XUiSTMainPage
|