我有一个MainMenuScene和一个GameScene ......
在MainMenu中我有一个按钮开始进入GameScene,在游戏中间我想要重新启动或者只是退出游戏,当我用另一个GameScene替换GameScene时,我做了2个游戏或者只是回到主菜单然后再回到新的GameScene,FPS开始下降和下降,如果我做了那个循环1次FPS从60下降到30,如果我再次这样做,FPS下降到15,等等...
我认为问题是内存泄漏,因为我让场景活着......但是我没有检查和检查,并且在任何地方都没有对该场景的强烈引用,并且还启用了ARC,我检查了根据Xcode的仪器,仪器配置文件并没有任何内存泄漏。
有没有人遇到过这个问题......或者有人知道我可能做错了什么?根据我在CCDirector的ReplaceScene方法中读到的那个场景被破坏并用新的场景替换,所以应该没有问题。
== 忘了提一下: 我对Singleton中的GameLayer和GameScene有一个弱引用,但是当我替换场景时,我立即设置了那两个nil,即使我不应该因为它们是弱引用但我这样做以防万一。
添加图片以获取更多背景信息:
使用上面的图像,您可以看到每次调用来自CCDirector的ReplaceScene时,场景,特别是GameScenes,都会被取消分配。所以内存泄漏不是问题所在,但似乎场景没有被破坏,或者这就是我的想法,因为FPS每次都在不断下降和丢弃。
......以后很少有人替换......
这里奇怪的是MainMenu并没有受到影响,渲染时间是相同的......绘制调用是相同的(这是可以理解的,即使在GameScene中,drawCalls保持不变。)但是在GameScene中,FPS不断下降,渲染时间变得巨大,这就是为什么游戏变得非常慢。
会继续检查。
答案 0 :(得分:0)
解决方案非常简单......除了一个batchnode之外,所有内容都被正确释放,处理后台的特定batchnode正在杀死我的应用程序性能。
因此,对于那里的任何人,请记得检查您的CCBatchNodes,并在更换场景的那一刻将任何其他强引用连接到场景。释放几乎立即发生,但它有助于设置被释放的父对象的nil子对象。但在我的情况下,SpriteBatchnode是影响我的FPS的一个因素,可以提高时间性能。
感谢LearnCocos2D,非常感谢您的帮助。