重启游戏时FPS不断下降

use*_*112 2 frame-rate ios sprite-kit skscene swift

我正在SpriteKit中构建一个新游戏,每次我想重新启动游戏我都会切换场景,因此每次按"再次播放"时,我的GameScene会从头开始加载,这会导致我的FPS不断下降.

所以这导致我的FPS下降加班,因为每次按下播放我必须基本上加载全新的GameScene和游戏(主要是产生节点).我相信如果没有办法以一定的速率限制FPS,那么我就不应该在两个场景之间进行转换.

但是,我尝试了将所有内容保存在1个场景中的方法,但不幸的是,每次按下重新启动时都没有解决,生成的SKSpriteNodes的数量增加了一倍.因此,每次我再次播放时,节点和我的计时器的产生速度会提高2倍.我不知道如何解决这个问题.

Ale*_*ano 5

每次更改场景时,都应该将其与子项一起从内存中删除.

您可以在场景的末尾添加此方法:

deinit {
    print("\n THE SCENE \(type(of: self))) WAS REMOVED FROM MEMORY (DEINIT) \n")
}
Run Code Online (Sandbox Code Playgroud)

如果您没有在调试控制台中看到此打印件,那么您可能在代码中的某个位置强烈引用了self.您可以按照"为闭包解决强参考周期"的官方指南