我正在使用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.
我不确定在游戏过程中究竟是什么导致了这个错误。我正在检查很多碰撞,但是在游戏场景开始之后它们才会启动。
我也注意到在我的银河系S3上,当你滑动更换主屏幕并拉下顶部的任务栏时,游戏会使我的手机“闪烁”。
我认为这个错误与它有关,但我不确定。你们觉得怎么样?
每次用户进入另一个级别时,我都会重新初始化碰撞检测器。但我不会注销或停止最后发生的冲突。我认为在新的初始化时它们会被自动清理。
你们有什么想法?
答案 0 :(得分:4)
听起来您已经知道该消息告诉您的内容,即您的帧速率滞后。你的后续问题,"为什么?"没有更多信息就无法回答。您提供了一些可能性:它是碰撞处理吗?是处理不必要的碰撞吗?这是场景转换中的一些问题吗?答案是,也许吧。也许它是这些东西中的任何一个。也许它是别的东西。目前我们所能做的就是猜测,因为我们不看代码。
但好消息是,你并非没有追索权!您需要做的是测试代码并找出瓶颈所在。一个好的起点是抛出一些调用来计算您怀疑是问题的代码块之间的毫秒。您可能会发现,您认为我们变慢的事情实际上很快发生,相反,您认为快速的事情发生得很慢。专注于后者!在那里拨打更多电话,看看确切的事情需要更长的时间。并查看您的代码,看看为什么它可能在那里运行缓慢。是否有很多对象被实例化?它是从磁盘读取的吗?等等。
当你为他们做好准备时,有一些很棒的第三方工具可以深入测试,但是值得花一些时间来先计时和审查你自己的代码。作为怀疑可能出现问题的作者,你有优势。开始调查!
旁注,我提供了一些第三方工具的链接,但我是从按摩浴缸写的。我稍后会更新。