0

我正在用 andengine 构建一个新游戏,出于某种原因,我不断在 logcat 中得到这个调试语句:

01-31 21:29:50.503: I/Choreographer(697): Skipped 152 frames!  The application may be doing too much work on its main thread.

我不太确定在我的游戏过程中究竟是什么导致了这个错误。我正在检查很多碰撞,但直到游戏场景开始后它们才开始。

我还注意到在我的 Galaxy S3 上,当滑动更改主屏幕并拉下顶部的任务栏时,游戏会导致我的手机“闪烁”。

我认为这个错误与它有关,但我不确定。你们有什么感想?

此外,每次用户进入另一个级别时,我都会重新初始化碰撞检测器。但我不会取消注册或停止最后一次开始的碰撞。我认为当新的初始化时它们会自动清理。

你们有什么感想?

4

1 回答 1

4

听起来您知道消息在告诉您什么,即您的帧速率滞后。你的后续问题,“为什么?” 如果没有更多信息,将无法回答。您提供了一些可能性:是碰撞处理吗?是处理不必要的碰撞吗?是不是场景转换有问题?答案是,也许。也许是这些事情中的任何一个。也许是别的东西。目前我们所能做的就是猜测,因为我们没有看代码。

但好消息是,您并非没有追索权!您需要做的是测试您的代码并找出瓶颈所在。一个好的开始是在您怀疑是问题的代码块之间进行一些调用以计算毫秒数。你可能会发现,你认为我们很慢的事情实际上发生得很快,相反,你认为很快的事情正在慢慢发生。专注于后者!在那里打更多电话,看看到底哪里需要更长的时间。并查看您的代码,看看为什么它可能在那里运行缓慢。那里有很多对象被实例化吗?它是从磁盘读取的吗?等等。

当您准备好使用它们时,有一些很棒的第三方工具可以更深入地进行测试,但值得花一些时间来计时并首先检查您自己的代码。作为作者,您具有怀疑问题可能出在哪里的优势。开始调查!

旁注,我会提供一些第三方工具的链接,但我是从按摩浴缸写的。我稍后会更新。

于 2013-02-02T02:01:03.670 回答