1. 程式人生 > >項目記錄26--unity-tolua框架 View03-UIManager.lua

項目記錄26--unity-tolua框架 View03-UIManager.lua

面板 一個 全部 transform super mov iat ati manager

做為程序員要懂得假設保持健康,對電腦時間太長非常easy眼花,得脖子病,腰都疼,這星期六日組團到康寧去了,哈哈。

一個字“疼”!!!!

廢話不多少,把UIManager.lua個搞出來了。

事實上非常簡單,沒有做什麽二級界面。三級界面的想法如今,show就在最上層,基本怎麽用看之前的

function BasePanel:Show()
BasePanel.super.Show(self)
UIManager:Instance():AddPanel(self)
self._uiTransform:SetAsLastSibling() --設置最前


end

,手機遊戲非常少說多層界面,起碼休閑遊戲我沒看到過(或許自己孤陋寡聞)。臨時這個Manager僅僅做簡單的add,remove操作,以後能夠依據自己的須要改,比方保存下上個Panel等,也能夠做多級界面,起碼我不須要。



UIManager = class("UIManager")
--構造函數
function UIManager:ctor( )
self._uiRoot = UnityEngine.GameObject.Find("UI_ROOT")
if self._uiRoot == nil then
local tmp = UnityEngine.Resources.Load(PREFABS_PATH.."UI_ROOT")

self._uiRoot = UnityEngine.Object.Instantiate(tmp)?
end
end
--單例
function UIManager:Instance( ?)
if self._Instance == nil then
self._Instance = self.new()
end
return self._Instance
end
--加入panel
function UIManager:AddPanel(panel)
if type(panel) ~= "table" or panel == nil then?
error("UIManager AddPanel error no panel",2)
return false
end
if self._allPanels == nil then
self._allPanels = {}
end
if self._allPanels[panel._panelName] == nil then
self._allPanels[panel._panelName] = panel
return true
else
return false
end?
end


--移除panel
function UIManager:RemovePanel( panel )
if ?type(panel) ?~= "table" or panel == nil then?
error("UIManager RemovePanel error no panel",2)
return false
end
if self._allPanels[panel._panelName] ~= nil then
self._allPanels[panel._panelName] = nil
return true
end
return false
end


--移除全部面板
function UIManager:RemoveAllPanel()
if self._allPanels ~= nil then
local keys = table.keys(self._allPanels)
for i,v in ipairs(keys) do
v:Close() --先調用面板close
end
keys = nil
self._allPanels = nil
end
end


--銷毀
function UIManager:OnDestroy( ?)
self:RemoveAllPanel()
self._Instance = nil
self._uiRoot = nil
end




return UIManager

項目記錄26--unity-tolua框架 View03-UIManager.lua