SpriteKit,看似随意,下降到40 FPS

我在写一个iOS游戏,使用SpriteKit。 在游戏过程中,显然是随机的,帧速率将从60 FPS下降到40 FPS(总是40)。 我正在iPhone 6上运行这个版本。在编译发布和debugging的时候,这个bug是存在的。

我通常在屏幕上一次有30个左右的节点(有时候比较less),其中大部分节点都有物理实体,但是除了5个以外,其他的都是dynamic设置为NO 。 上述的物理实体不会相互碰撞,但是它们会与玩家节点发生碰撞。 玩家节点没有快速移动,而且一次只能触摸5个左右的节点。 当玩家节点与其他一些物理实体接触时,其dynamic属性被设置为YES 。 也许值得一提的是,我有一些UIViewUIImageView覆盖SKView的顶部,充当HUD。

这让我觉得这不是一个特别强烈的模拟。 我已经通过我的- update:方法,行动,联系侦听器等,没有发现任何可能造成这一点。 我在乐器(时间分析器)中度过了最后几天,希望能对这件事情有所了解,但是我还没有发现任何可以跳出来的东西。 不过,我承认对仪器来说还是比较新的。

现在,我没有办法重现错误。 我只是玩游戏,希望能遇到它。 有时会在场景加载(相当less见)时发生,只是在正常的游戏过程中,或者根本不存在。 如果我暂停游戏(暂停视图和场景),并恢复它,则帧速率会恢复。 有时帧速率会在几秒钟后恢复正常。 我完全不知道该怎么做。 任何帮助将非常感激。

提前致谢。

我唯一能想到的是为什么你会有一个巨大的帧率下降,如果你的平视显示器的所有纹理还没有预渲染。 所以你可能有最初的HUD预渲染和一些其他的图像,但一些事件在游戏中触发时,HUD使用的图像。