miduo_client/Assets/ManagedResources/~Lua/Modules/Common/SpriteLoader.lua

47 lines
1.1 KiB
Lua
Raw Normal View History

2021-04-21 13:12:04 +08:00
local SpriteLoaderPool = {}
local SpriteLoader = {}
-- 调用此方法创建一个管理器
function SpriteLoader.New()
-- 判断对象池里有没有
if #SpriteLoaderPool > 0 then
return table.remove(SpriteLoaderPool, 1)
end
-- 没有新建
local o = {}
o.SpriteList = {}
SpriteLoader.__index = SpriteLoader
setmetatable(o, SpriteLoader)
return o
end
function SpriteLoader:LoadSprite(name)
local transName = GetTranslateSpriteName(name)
local sp = resMgr:LoadSpriteAsset(name)
if sp then
if not self.SpriteList[sp.name] then
self.SpriteList[sp.name] = 0
end
-- 每次加载会导致引用计数加2
self.SpriteList[sp.name] = self.SpriteList[sp.name] + 1
return sp
end
end
-- 根据界面加载的数量卸载相应数量的资源
function SpriteLoader:UnLoadSprite()
for name, count in pairs(self.SpriteList) do
resMgr:UnLoadAsset(name, count)
end
self.SpriteList = {}
-- 回收到对象池
table.insert(SpriteLoaderPool, self)
end
-- 销毁loader
function SpriteLoader:Destroy()
self:UnLoadSprite()
end
return SpriteLoader