84 lines
2 KiB
Lua
84 lines
2 KiB
Lua
|
local effectNode
|
||
|
local effects = {}
|
||
|
local format = string.format
|
||
|
|
||
|
local Init = function(node)
|
||
|
if not node then
|
||
|
XLog.Warning("XUiDrawShowEffect: Init with nil.")
|
||
|
return
|
||
|
end
|
||
|
if effectNode then
|
||
|
XLog.Warning("XUiDrawShowEffect: Reset effectNode.")
|
||
|
end
|
||
|
effectNode = node
|
||
|
end
|
||
|
|
||
|
local PlayEffect = function(name)
|
||
|
if not effectNode then
|
||
|
XLog.Warning("XUiDrawShowEffect: Play effect without Init.")
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if not name or type(name) ~= "string" then
|
||
|
XLog.Warning(format("XUiDrawShowEffect: Invalid name: %s.", name))
|
||
|
end
|
||
|
|
||
|
if not effects[name] then
|
||
|
local effect = effectNode:Find(name)
|
||
|
if effect then
|
||
|
effects[name] = effect.gameObject
|
||
|
else
|
||
|
XLog.Warning(format("XUiDrawShowEffect: Effect not found. Name: %s", name))
|
||
|
return
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if effects[name]:Exist() then
|
||
|
effects[name]:SetActive(false)
|
||
|
effects[name]:SetActive(true)
|
||
|
else
|
||
|
XLog.Warning(format("XUiDrawShowEffect: UnityObject has been destroyed. Name: %s", name))
|
||
|
return
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local HideEffect = function(name)
|
||
|
if not name or type(name) ~= "string" then
|
||
|
XLog.Warning("XUiDrawShowEffect: Invalid name.")
|
||
|
end
|
||
|
|
||
|
if effects[name] and effects[name]:Exist() then
|
||
|
effects[name]:SetActive(false)
|
||
|
else
|
||
|
XLog.Warning(format("XUiDrawShowEffect: Effect not found. Name: %s", name))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local HideAll = function()
|
||
|
for k, v in pairs(effects) do
|
||
|
if v:Exist() then
|
||
|
v:SetActive(false)
|
||
|
else
|
||
|
effects[k] = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local Dispose = function()
|
||
|
effectNode = nil
|
||
|
for k, _ in pairs(effects) do
|
||
|
effects[k] = nil
|
||
|
end
|
||
|
effects = {}
|
||
|
effectNode = nil
|
||
|
end
|
||
|
|
||
|
local DrawShowEffect = {}
|
||
|
|
||
|
DrawShowEffect.Init = Init
|
||
|
DrawShowEffect.PlayEffect = PlayEffect
|
||
|
DrawShowEffect.HideEffect = HideEffect
|
||
|
DrawShowEffect.HideAll = HideAll
|
||
|
DrawShowEffect.Dispose = Dispose
|
||
|
|
||
|
return DrawShowEffect
|