Cocos2D场景记忆管理

Fai*_*lik 1 iphone cocos2d-iphone xcode4.2

我有一个关于Cocos2D的问题.我在游戏中有两个场景都有很多精灵.当我替换一个场景并加载另一个场景时发生了什么?是否所有的精灵都被自动删除或者它正在记忆中,并且当我在场景中释放时会被释放?

我无法理解这个事情在这种情况下如何处理内存,所以任何人都可以解释我那个事情,更重要的是,当我们在场景中加载精灵时,这对我们来说很重要.

Lea*_*s2D 6

你调用replaceScene的那一刻两个场景都会在内存中存在很短的时间!如果您使用CCSceneTransition,那么两个场景将在转换期间在内存中.

流程如下:

  • 场景A正在运行
  • 用sceneB调用CCDirector replaceScene
  • 场景B初始化,可能加载精灵等
  • 场景A被解除分配并释放内存

您可以-(void) cleanup在场景中实现该方法以在更改场景之前删除其大部分内容,并且您可能希望将新内容加载到该-(void) onEnter { [super onEnter]; }方法.

就个人而言,我发现在这种情况下更好的方法是"加载"场景,这两个场景之间的场景(它可能甚至不活动超过几毫秒).这使得第一个场景时间在初始化下一个场景之前被释放.