我正在使用SpriteKit编写iOS游戏。在游戏过程中,看似随机的时间,帧速率将从60 FPS降至40 FPS(始终为40)。我正在iPhone 6上运行它。构建用于发布和调试的bug时出现。
我通常一次在屏幕上大约有30个节点(有时更少),这些节点中的大多数都有物理体,但是,除了5个节点外,所有其他节点的dynamic
都设置为NO
。前述物理实体不会相互碰撞,但是会与玩家节点发生碰撞。播放器节点移动不快,通常一次只能触摸约5个左右的节点。当玩家节点与其他一些物理物体接触时,它们的dynamic
属性将设置为YES
。
可能还值得一提的是,我有几个UIView
和UIImageView
覆盖在SKView
的顶部,用作HUD。
令我惊讶的是,这并不是一个特别密集的模拟。我已经遍历了- update:
方法,操作,联系监听器等,但未发现任何可能引起此问题的内容。我在仪器(Time Profiler)中花了最后几天,希望它可以使您对此事有所了解,但是再次,我没有发现任何让我惊讶的事情。但是,我承认对Instruments来说是相当新的东西。
现在,我无法重现该错误。我只需要玩游戏,并希望能遇到它。有时会在场景加载(很少发生)时,仅在正常游戏过程中或根本不加载时发生。如果我暂停游戏(暂停 View 和场景),然后继续播放,则帧速率会恢复。有时,帧速率会在几秒钟后恢复正常。我完全不知所措。任何帮助将非常感激。
提前致谢。
最佳答案
对于为什么您的帧速率会大幅下降,我唯一能想到的就是HUD的所有纹理是否尚未预渲染。因此,您可能已经预渲染了初始HUD和一些其他图像,但是在游戏中触发某些事件时,HUD使用了一些图像。
关于ios - SpriteKit,看似随机,下降到40 FPS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27318579/