2015-05-10 90 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個較小的塊。