大 SKSpriteNodes 导致帧率下降

Large SKSpriteNodes causing frame rate drop

我正在使用相当大的 SpriteNodes 在 iOS Swift.

中移动我的背景(除此之外)
let runningBar = SKSpriteNode(imageNamed: "Bar")
self.addChild(self.scoreText)

它是这样移动的:

override func update(currentTime: NSTimeInterval) {

    // Golf
    updateRunningBarPosition()

}

func updateRunningBarPosition() {
    runningBar.position.y = CGFloat(Double(runningBar.position.y) + createSinWave(angle) * 1)
    self.angle += 0.01
}

这会导致帧速率从 60 fps 下降到大约 28-32。

如何防止这种情况发生?

如果图像资源非常大,你需要考虑它们上传到 gpu 和渲染所花费的时间,如果它们有 alpha 或任何其他效果应用于它们,并且你有相当多的图像gpu 时间可以呈指数增长,您最终会遇到掉帧的情况。一个好的策略是问问自己是否真的需要这么大的图像开始,因为您可以通过平铺背景或使用可拉伸渐变将工作分解成更小、更容易处理的块,或者分解大图像图像分成 4-10 个较小的块。