项目一开始加载了游戏所需要的所有资源,造成了内存占用过高的情况。
记录下当前的解决思路吧:
统计下个场景要加载的资源。在replaceScene的时候,首先根据要加载的资源以及当前这个场景做比较,找出不需要的资源释放掉,同时加载那些当前不存在的资源,估计要用到的常用到的函数分别为:
ccs.ArmatureDataManager:getInstance():removeArmatureFileInfo(k);
cc.Director:getInstance():getTextureCache():removeUnusedTextures();
ccs.ArmatureDataManager:getInstance():addArmatureFileInfoAsync;
下面上lua代码的思路
function CReplaceScene:ReplaceScence(replaceFn,bHasProgress,...) --(...表示要加载的资源表等) --replaceFn表示处理完资源的回调,通用用于切换场景
local sceneLoading = CLoadingScene:Create(replaceFn,...);
cc.Director:getInstance():replaceScene(sceneLoading);
end
其中,上述思路为,切换到loadingScene加载完资源之后,调用replaceFn切换到目标场景。CLoadingScene里面要说的是就是上面所说的找出要释放的资源以及需要加载的资源。
--以上是自己在项目中看到别人所写而自己理解的,有可能有误,需谨慎。以后有了新的理解之后在进行补充........
原文链接:https://www.f2er.com/cocos2dx/344861.html