我有一個使用Sprite-Kit和Swift的遊戲,其中我從屏幕頂部到屏幕底部生成隨機圓圈。FPS下降和遊戲變慢 - Sprite-Kit和Swift
啓動遊戲時,它在開始時運行得非常好(大約60 FPS或更低),但隨後FPS逐漸下降,遊戲變得非常緩慢......我不明白爲什麼FPS會隨着時間而下降(節點數保持在8-10左右,所以當它們離開屏幕時它們會被移除) - 我在iOS模擬器和實際設備上測試了它,有什麼想法?
我檢查過,問題不是來自內存泄漏。另外,我只使用一個視圖控制器。
,我認爲可能會導致這個問題是這樣的,但我不知道爲什麼,唯一的功能:
/* Function to generate single random circle */
func generateCircle() -> Void {
let circleSize:CGFloat = CGFloat(arc4random_uniform(40) + 3)
let xPosition:CGFloat = CGFloat(arc4random_uniform(UInt32(size.width)))
var randomCircle = SKShapeNode(circleOfRadius: circleSize)
randomCircle.strokeColor = SKColor.redColor()
randomCircle.fillColor = SKColor.redColor()
randomCircle.physicsBody = SKPhysicsBody(circleOfRadius: circleSize)
randomCircle.physicsBody?.dynamic = false
randomCircle.position = CGPoint(x: xPosition, y: size.height + circleSize*2)
randomCircle.physicsBody?.dynamic = true
randomCircle.physicsBody?.categoryBitMask = randomCirclesGroup
addChild(randomCircle)
}
你可能在遊戲中使用了多個UIVIewControllers?從以往的經驗來看,這會導致糟糕的表現 – Bokoskokos
節點數只考慮正在繪製的節點。離屏節點不計算在內,但可能仍然在層次結構中。但是因爲他們沒有畫出來。無論如何,這可能有很多原因,並且需要一些你至少懷疑或者更好的代碼:已經測得性能很差。一個非常常見的初學者的錯誤是創建太多的節點或實體,可能每次都應該改變某些東西,而不是僅僅改變它們的屬性。但是這是一炮打響。開始刪除代碼,直到您發現性能明顯更好,然後在此處發佈該代碼(其具有性能影響)。 – LearnCocos2D
@ LearnCocos2D謝謝,我發佈了一些代碼,我認爲這可能是問題(當我生成下降的圓時,它可能會減慢) – sachalondon