大型SKSpriteNodes导致帧速率下降

时间:2015-05-10 18:23:55

标签: ios swift sprite-kit

我正在使用相当大的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。

如何防止这种情况发生?

1 个答案:

答案 0 :(得分:2)

如果图片资源非常大,你需要考虑他们上传到gpu和渲染的时间,如果他们有alpha,或者对他们应用任何其他效果,你有相当多的图像gpu次可以成倍增长,你最终会遇到帧丢失。一个好的策略是问问自己你是否真的需要这么大的图像,因为你可以通过比较平铺你的背景,使用可伸缩的渐变,或者分解大的细分来更小,更容易处理块。将图像分成4-10个较小的块。