我有一个 MainMenuScene 和一个 GameScene ......
在 MainMenu 中,我有进入 GameScene 的按钮开始,在游戏中间我想重新启动或退出游戏,当我用另一个 GameScene 替换 GameScene 或只是去回到主菜单,然后再次回到新的 GameScene,FPS 开始下降,如果我这样做循环 1 次,FPS 从 60 下降到 30,如果我再次这样做,FPS 下降到 15,依此类推等等...
我认为问题在于内存泄漏,因为我让场景活着......但我没有检查并检查过,并且在任何地方都没有强烈引用该场景,并且启用了它的 ARC,我检查了 Instruments 配置文件和根据 Xcode 的仪器,没有任何内存泄漏。
有没有人遇到过这个问题......或者任何人知道我可能做错了什么?根据我在 CCDirector 的 ReplaceScene 方法中读到的内容,场景被破坏并替换为新场景,所以应该没有问题。
==忘了提:我在单例中对 GameLayer 和 GameScene 有一个弱引用,但是当我替换场景时,我立即将那些 2 nil 设置为,即使我不应该因为它们是弱引用但我以防万一。
添加图像以获得更多上下文:
通过上图,您可以看到每次调用 CCDirector 中的 ReplaceScene 时,场景,特别是 GameScenes,都会被释放。所以内存泄漏不是问题,但似乎场景没有被破坏,或者这就是我的想法,因为 FPS 每次都在不断下降。
......后来很少更换场景......
这里奇怪的是 MainMenu 根本没有受到影响,渲染时间是相同的......绘图调用是相同的(这是可以理解的,即使在 GameScene 中,drawCalls 保持不变。)但是在 GameScene FPS 不断下降,渲染时间变得非常长,这就是游戏变得异常缓慢的原因。
将继续检查。