2015-12-02 61 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