我正在 SpriteKit 中构建一个新游戏,每次我想重新启动游戏时我都会切换场景,因此每次我按下“再玩一次”时,我的 GameScene 都会从头加载,这会导致我的 FPS 不断下降。
因此,这导致我的 FPS 超时下降,因为每次我按下播放键时,我基本上都必须加载整个新的 GameScene 和上面的游戏(主要是生成节点)。我认为,如果无法将 FPS 限制在特定速率,那么我就不应该在 2 个场景之间使用过渡。
但是,我尝试了将所有内容都保留在 1 个场景中的方法,但不幸的是它没有成功,因为每次我按下重新启动时,生成的 SKSpriteNode 数量都会翻倍。因此,每次我再次玩游戏时,节点的生成和我的计时器都会加快 2 倍。我不知道如何解决这个问题。
最佳答案
每次更改场景时,都应将其与其子项一起从内存中删除。
您可以在场景末尾添加此方法:
deinit {
print("\n THE SCENE \(type(of: self))) WAS REMOVED FROM MEMORY (DEINIT) \n")
}
如果您在调试控制台中没有看到此输出,则可能您的代码中某处对 self 有很强的引用。 您可以按照官方指南"Resolving Strong Reference Cycles for Closures"
关于ios - 重启游戏时FPS不断下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40954605/