1

我最近升级到 Cocos2d 2.0 之前我的游戏运行正常,帧率稳定在 60fps。在升级到 2.0 并将一些代码更改为新版本后,我发现玩游戏大约 3-4 分钟帧速率下降到 50,而不是大约 40。

我在我的代码中发现了一些错误,比如错误地释放了一些精灵,但这 FPS 下降仍然存在。

我在场景中不断地创建精灵并移除精灵。在游戏的每一轮之后,我都会移除屏幕元素并为新一轮重新创建它们。几乎所有元素都是动画的,我会在将它们从场景中移除之前停止所有动作。

我发现如果我删除场景并重新启动它,FPS 速率就会恢复正常。

我做错了什么?我尝试了几种可能的解决方案,但我找不到路由原因。

有人可以帮忙吗?

哦,我忘了说代码在 Cocos2d 1.x 版本上运行良好。我从未发现任何使用相同代码的 FPS 下降。

4

1 回答 1

1

调试还是发布?设备还是模拟器?---> 仅在设备上的发布版本中测量性能。

从描述来看,这听起来很像内存泄漏,您要么获得越来越高的内存使用率,要么越来越多的节点没有释放,这意味着它们可能会继续运行。甚至可能在屏幕外绘制。

一个版本运行良好而另一个版本不行的原因有很多,谁能说这个错误只是过渡过程中引入的一个新错误。我将从一个简单的测试开始:场景的所有节点是否在您删除它们时都运行它们的 dealloc 方法?如果没有,你有一个内存泄漏,也许是一个保留周期。cocos2d 的 API 从 assign 属性到 retain 属性的一个简单更改就是导致这样的事情。

然后检查 Instruments 以找出您泄漏内存的确切位置。

于 2012-09-12T21:19:37.750 回答