cocos场景切换流程和资源加载释放一

从A场景切换到B场景整体流程:
一、不使用切场效果
B:(构造和init函数) ——>A:(onExitTransitionDidStart)——>A:(onExit)——>A:(析构函数)——>B:(onEnter)——>B:(onEnterTransitionDidFinish)
二、使用切场效果
B:(构造和init函数)——>A:(onExitTransitionDidStart)——>B:(onEnter)——>A:(onExit)——>B:(onEnterTransitionDidFinish)——>A:(析构函数)
最佳解决方案:
综上,最佳释放资源时机为在B场景的onEnterTransitionDidFinish函数里延迟一帧释放,可以保障前一个场景的资源都被释放掉,但这样会导致A、B场景在完成切换之前资源同时存在,达到峰值后有可能导致游戏崩溃。解决办法为在A、B场景直接加个Loading场景负责过渡,Loading本身使用资源有限,主要负责是否前一个场景的资源并加载下一个场景的资源(为了效果更好,可以使用异步加载,这样Loading界面可以使用动画),流程如下:
A——>Loading——>B
如果使用切换效果则在进入B场景后的下一帧Loading自身所用的资源才会被释放,
如果不使用切换效果则在进入B场景的onEnterTransitionDidFinish时就释放了Loading自身的资源。
 代码见下一篇文章。

发表评论

电子邮件地址不会被公开。 必填项已用*标注