我正在使用SpriteKit编写iOS游戏。在游戏过程中,看似随机的时间,帧速率将从60 FPS降至40 FPS(始终为40)。我正在iPhone 6上运行它。构建用于发布和调试的bug时出现。

我通常一次在屏幕上大约有30个节点(有时更少),这些节点中的大多数都有物理体,但是,除了5个节点外,所有其他节点的dynamic都设置为NO。前述物理实体不会相互碰撞,但是会与玩家节点发生碰撞。播放器节点移动不快,通常一次只能触摸约5个左右的节点。当玩家节点与其他一些物理物体接触时,它们的dynamic属性将设置为YES
可能还值得一提的是,我有几个UIViewUIImageView覆盖在SKView的顶部,用作HUD。

令我惊讶的是,这并不是一个特别密集的模拟。我已经遍历了- update:方法,操作,联系监听器等,但未发现任何可能引起此问题的内容。我在仪器(Time Profiler)中花了最后几天,希望它可以使您对此事有所了解,但是再次,我没有发现任何让我惊讶的事情。但是,我承认对Instruments来说是相当新的东西。

现在,我无法重现该错误。我只需要玩游戏,并希望能遇到它。有时会在场景加载(很少发生)时,仅在正常游戏过程中或根本不加载时发生。如果我暂停游戏(暂停 View 和场景),然后继续播放,则帧速率会恢复。有时,帧速率会在几秒钟后恢复正常。我完全不知所措。任何帮助将非常感激。

提前致谢。

最佳答案

对于为什么您的帧速率会大幅下降,我唯一能想到的就是HUD的所有纹理是否尚未预渲染。因此,您可能已经预渲染了初始HUD和一些其他图像,但是在游戏中触发某些事件时,HUD使用了一些图像。

关于ios - SpriteKit,看似随机,下降到40 FPS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27318579/

10-12 05:41