【ios】添加图片回收机制,子物体不再从缓存池中创建,修改commonatlas到dy文件夹

dev_chengFeng
JLIOSM1 2021-04-20 17:13:10 +08:00
parent c31a82ef7f
commit 56d849c6a1
4 changed files with 72 additions and 22 deletions

View File

@ -8,8 +8,6 @@ this.game = nil
this.name = nil
this.isPlayAudio = true
--UIManager打开UI时调用子类不要重写此方法
function BasePanel:CreateUI(gameObject)
self.name = gameObject.name
@ -17,11 +15,24 @@ function BasePanel:CreateUI(gameObject)
self.transform = gameObject.transform
self.canvas = self.gameObject:GetComponent("Canvas")
self.openNum = 0
self.SpriteList = {}
if self.Awake ~= nil then
MyPCall(function() self:Awake() end)
MyPCall(
function()
self:Awake()
end
)
end
MyPCall(function() self:InitComponent() end)
MyPCall(function() self:BindEvent() end )
MyPCall(
function()
self:InitComponent()
end
)
MyPCall(
function()
self:BindEvent()
end
)
end
--设置渲染层级
@ -32,10 +43,10 @@ function BasePanel:SetSortingOrder(sortingOrder)
self:OnSortingOrderChange()
end
local playUIAnimsOnStart = function (gameObject)
local playUIAnimsOnStart = function(gameObject)
local anims = gameObject:GetComponentsInChildren(typeof(PlayFlyAnim))
if anims.Length > 0 then
for i=0, anims.Length-1 do
for i = 0, anims.Length - 1 do
local anim = anims[i]
if anim.isPlayOnOpen then
anim:PlayAnim(false)
@ -47,7 +58,11 @@ end
--UI打开时由UIManager调用子类不要重写此方法
function BasePanel:OpenUI(IsBackOpen, ...)
if not self.isOpened then
MyPCall(function() self:AddListener() end)
MyPCall(
function()
self:AddListener()
end
)
if self.Update ~= nil then
UpdateBeat:Add(self.Update, self)
end
@ -79,7 +94,11 @@ end
--UI关闭时由UIManager调用子类不要重写此方法
function BasePanel:CloseUI()
if self.isOpened then
MyPCall(function() self:RemoveListener() end)
MyPCall(
function()
self:RemoveListener()
end
)
if self.Update ~= nil then
UpdateBeat:Remove(self.Update, self)
end
@ -99,6 +118,7 @@ end
--UI销毁时由UIManager调用子类不要重写此方法
function BasePanel:DestroyUI()
self:UnLoadSprite()
self:OnDestroy()
Game.GlobalEvent:DispatchEvent(GameEvent.UI.OnDestroy, self.uiConfig.id, self)
end
@ -155,10 +175,23 @@ end
function BasePanel:OnDestroy()
end
function BasePanel:LoadSprite(name)
local transName = GetTranslateSpriteName(name)
local sp = resMgr:LoadAsset(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
end
end
-- 根据界面加载的数量卸载相应数量的资源
function BasePanel:UnLoadSprite()
for name, count in pairs(self.SpriteList) do
for i = 1, count do
resMgr:UnLoadAsset(name)
end
end
end

View File

@ -16,4 +16,20 @@ function InitLanguageData()
LogGreen("语言初始化完成:"..tostring(#languageData))
end
-- 图片名字翻译
function GetTranslateSpriteName(name)
local subStr = string.sub(name, #name - 2, #name)
local transName = name
if subStr == "_zh" then
local l = GetCurLanguage()
if l == 1 then
transName = string.sub(transName, 1, #transName - 2) .. "en"
elseif l == 2 then
transName = string.sub(transName, 1, #transName - 2) .. "vi"
end
end
return transName
end
InitLanguageData()

View File

@ -14,7 +14,8 @@ local function playUIAnimsOnStart(gameObject, callback)
end
end
local function createPanel(uiConfig, parent)
local gameObject = poolManager:LoadAsset(uiConfig.assetName, PoolManager.AssetType.GameObject)
local _obj = resMgr:LoadAsset(uiConfig.assetName)
local gameObject = GameObject.Instantiate(_obj)
gameObject.name = uiConfig.name
local transform = gameObject.transform
transform:SetParent(parent)
@ -66,7 +67,7 @@ function this.Close(sub)
if sub.OnClose then
sub:OnClose()
end
poolManager:UnLoadAsset(sub.assetName, sub.gameObject, PoolManager.AssetType.GameObject)
resMgr:UnLoadAsset(sub.assetName)
end

View File

@ -532,16 +532,16 @@ public class FindReferences
else{
Counter.Add(resName, 1);
}
if (!AssetDatabase.IsValidFolder("Assets/ManagedResources/Atlas/" + tarFolder))
if (!AssetDatabase.IsValidFolder("Assets/ManagedResources/DynamicAtlas/" + tarFolder))
{
AssetDatabase.CreateFolder("Assets/ManagedResources/Atlas", tarFolder);
AssetDatabase.CreateFolder("Assets/ManagedResources/DynamicAtlas", tarFolder);
}
if (!AssetDatabase.IsValidFolder("Assets/ManagedResources/Atlas/" + tarFolder + "/ArtFont"))
if (!AssetDatabase.IsValidFolder("Assets/ManagedResources/DynamicAtlas/" + tarFolder + "/ArtFont"))
{
AssetDatabase.CreateFolder("Assets/ManagedResources/Atlas/" + tarFolder, "ArtFont");
AssetDatabase.CreateFolder("Assets/ManagedResources/DynamicAtlas/" + tarFolder, "ArtFont");
}
string tarPath = "Assets/ManagedResources/Atlas/" + tarFolder;
string tarPath = "Assets/ManagedResources/DynamicAtlas/" + tarFolder;
if (subFolder == "ArtFont")
{
tarPath += "/ArtFont";