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

48 lines
1.2 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
2021-04-21 13:12:04 +08:00
-- 没有新建
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
LogWarn("lua 回收资源name:"..name..", count:"..count)
2021-04-21 13:12:04 +08:00
resMgr:UnLoadAsset(name, count)
end
self.SpriteList = {}
-- 回收到对象池
table.insert(SpriteLoaderPool, self)
end
-- 销毁loader
function SpriteLoader:Destroy()
self:UnLoadSprite()
end
return SpriteLoader