2021-04-21 13:12:04 +08:00
|
|
|
|
local SpriteLoaderPool = {}
|
|
|
|
|
local SpriteLoader = {}
|
2021-04-22 11:20:16 +08:00
|
|
|
|
local spLoaderIndex = 0
|
2021-04-21 13:12:04 +08:00
|
|
|
|
|
|
|
|
|
-- 调用此方法创建一个管理器
|
|
|
|
|
function SpriteLoader.New()
|
2021-04-21 22:45:37 +08:00
|
|
|
|
-- -- 判断对象池里有没有
|
|
|
|
|
-- if #SpriteLoaderPool > 0 then
|
|
|
|
|
-- return table.remove(SpriteLoaderPool, 1)
|
|
|
|
|
-- end
|
2021-04-21 13:12:04 +08:00
|
|
|
|
-- 没有新建
|
2021-04-22 11:20:16 +08:00
|
|
|
|
spLoaderIndex = spLoaderIndex + 1
|
2021-04-21 13:12:04 +08:00
|
|
|
|
local o = {}
|
|
|
|
|
o.SpriteList = {}
|
2021-04-22 11:20:16 +08:00
|
|
|
|
o.id = spLoaderIndex
|
2021-04-21 13:12:04 +08:00
|
|
|
|
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()
|
2021-04-22 11:20:16 +08:00
|
|
|
|
if not SpriteLoaderPool[self.id] then
|
|
|
|
|
SpriteLoaderPool[self.id] = 0
|
|
|
|
|
end
|
|
|
|
|
SpriteLoaderPool[self.id] = SpriteLoaderPool[self.id] + 1
|
|
|
|
|
if SpriteLoaderPool[self.id] > 1 then
|
|
|
|
|
LogError("SpriteLoader Repeat UnLoad : ".. self.id..", count : "..SpriteLoaderPool[self.id])
|
|
|
|
|
end
|
2021-04-21 13:12:04 +08:00
|
|
|
|
for name, count in pairs(self.SpriteList) do
|
2021-04-22 09:46:59 +08:00
|
|
|
|
LogWarn("lua 回收资源:name:"..name..", count:"..count)
|
2021-04-21 13:12:04 +08:00
|
|
|
|
resMgr:UnLoadAsset(name, count)
|
|
|
|
|
end
|
|
|
|
|
self.SpriteList = {}
|
2021-04-22 11:20:16 +08:00
|
|
|
|
-- -- 回收到对象池
|
|
|
|
|
-- table.insert(SpriteLoaderPool, self)
|
2021-04-21 13:12:04 +08:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 销毁loader
|
|
|
|
|
function SpriteLoader:Destroy()
|
|
|
|
|
self:UnLoadSprite()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return SpriteLoader
|