2015-12-02 48 views
0

我已經創建了一個簡單的iPhone遊戲,用戶在丟失遊戲後重定向到另一個視圖,並可以「​​再次開始」再次播放。iOS和SpriteKit - 重新啓動遊戲後的低fps

當遊戲開始時它運行平穩,它有大約60 fps,問題開始時,他失去了遊戲和明星。

GameViewController.swift

override func viewDidLoad() { 
     super.viewDidLoad() 



     if let scene = GameScene(fileNamed:"GameScene") { 
      /* 
       ... some code ... 
      */ 

      scene.gameOverFunc = gameOverScreen 

      skView.presentScene(scene) 
     } 
    } 

func gameOverScreen(){ 

     let skView = self.view as! SKView 
     skView.presentScene(nil) 

     dispatch_async(dispatch_get_main_queue()){ 
      self.performSegueWithIdentifier("gmov", sender: self) 
     } 
    } 

GameScene.swift

func gameOver(){ 
     /* 
      ... some code ... 
     */ 

     if let gmovFunc = gameOverFunc { 
      gmovFunc() 
     } 

    } 


override func update(currentTime: CFTimeInterval) { 
     gameOver() 
    } 

我已經設置從一個SEGUE 「遊戲結束」 屏幕GameViewController。 每次新遊戲後,遊戲的表現都會下降。 在離開「遊戲結束」屏幕之前,我是否必須銷燬SKScene的實例?

+0

這可能是對你有意思:http://stackoverflow.com/questions/34052659/memory-increase-in-spritekit-even-though-removeallchildren-called – Stefan

回答

0

從GameOver到GameViewController的segue將創建另一個實例。 ViewController和場景。因此你的表現會下降。您需要unwind segue,而不是使用performSegue創建ViewController的新實例。

+0

這裏是說明本教程:HTTP:// www.raywenderlich.com/113394/storyboards-tutorial-in-ios-9-part-2 – Stefan