2015-05-10 51 views
2

我使用相当大的SpriteNodes在iOS Swift中移动我的背景(事物之间)。大SKSpriteNodes导致帧速率下降

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帧的帧速率下降至约28-32。

如何防止这种情况发生?

+1

http://stackoverflow.com/a/19562222/4078517 – Darvydas

回答

2

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