PGRData/Script/matrix/xui/xuicommon/XUiBaseView.lua

86 lines
2.4 KiB
Lua
Raw Normal View History

XUiBaseView = XClass(XUiBaseComponent, "XUiBaseView")
-- function XUiBaseView:Ctor(rootUi, ui)
-- end
-- for override
function XUiBaseView:Show()
self.GameObject:SetActiveEx(true)
self:Refresh()
end
-- for override
function XUiBaseView:Close()
self.GameObject:SetActiveEx(false)
end
-- for override
function XUiBaseView:Refresh()
end
-- self:AddTemplate(self.GridCommon, self.PanelReward, XUiGridCommon) -- 封装继承XUiBaseComponent
-- self:UpdateTemplateList(self.GridCommon, datas)
--==== 创建模板列表 begin
-- 设置模板对象
function XUiBaseComponent:AddTemplate(templateGO, parent, component)
if XTool.UObjIsNil(templateGO) then
XLog.Error("模板对象设置失败为nil")
return
end
self:_TryInitData()
if not self._TemplateComponentMap[templateGO] then
templateGO.gameObject:SetActiveEx(false)
self._TemplateComponentMap[templateGO] = component
self._TemplateParentMap[templateGO] = parent
self._TemplateList[templateGO] = {}
end
end
-- 刷新模板对象列表
function XUiBaseComponent:UpdateTemplateList(templateGO, dataList)
if not self._TemplateList[templateGO] or not self._TemplateParentMap[templateGO] then
XLog.Error("模板对象列表刷新失败未初始化go或parent")
return
end
-- 隐藏多余对象
local list = self._TemplateList[templateGO]
local len = #dataList
if #list > len then
for i = len + 1, #list do
list[i].GameObject:SetActiveEx(false)
end
end
-- 刷新列表对象
for i, data in ipairs(dataList) do
local comp = self:_GetTemplateComponent(templateGO, i)
comp.GameObject:SetActiveEx(true)
comp:Refresh(data)
end
end
function XUiBaseComponent:_TryInitData()
if not self._TemplateComponentMap then
self._TemplateComponentMap = {}
self._TemplateParentMap = {}
self._TemplateList = {}
end
end
function XUiBaseComponent:_GetTemplateComponent(templateGO, index)
local list = self._TemplateList[templateGO]
local comp = list[index]
if not comp then
local parent = self._TemplateParentMap[templateGO]
local component = self._TemplateComponentMap[templateGO]
local go = CS.UnityEngine.Object.Instantiate(templateGO)
go.transform:SetParent(parent, false)
comp = component.New(go)
list[index] = comp
end
return comp
end
--==== 创建模板列表 end