2015-11-01 110 views
3

我有一個問題,我的精靈套件遊戲,它重新啓動後立即使用 模型賽格我的gameoverviewcontroller。
每次重新開始遊戲後,fps也會被除以2。
所以我實際上需要一種方法來刪除遊戲後,我使用segue。
我已經嘗試了self.dismissViewControllerAnimated(true,completion:nil)但我真的不知道我應該放哪裏。賽後重新啓動gameOverViewcontroller

我已經在我的故事板3個視圖控制器1爲開始誰使用模式按鈕的第二個按鈕,我有遊戲場景播放。

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    print("start vc") 

    // Configure the view. 
    let skView = self.view as! SKView 
    skView.showsFPS = true 
    skView.showsNodeCount = true 
    skView.multipleTouchEnabled = true 

    /* Sprite Kit applies additional optimizations to improve rendering performance */ 
    skView.ignoresSiblingOrder = true 

    /* Set the scale mode to scale to fit the window */ 
    Scene = GameScene(size: skView.bounds.size) 
    Scene.scaleMode = .AspectFill 
    Scene.viewController = self 

    skView.presentScene(Scene) 
} 

在當玩家死亡我在遊戲中使用這個月底scene.swift

self.viewController?.performSegueWithIdentifier("GameOver", sender: self.viewController!) 

而這gameviewcontroller.swift

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "GameOver" { 
     let destViewController: GameOverViewController = segue.destinationViewController as! GameOverViewController 
     destViewController.Score = Scene.Score 
     destViewController.screenShot = Scene.image 
     print("segue") 
     Scene.viewController = nil 
    } 
} 

去第三視圖控制器。

現在我已經把多個打印命令throwout我的代碼。
我看到遊戲在賽季結束後自動重啓。 有任何身體如何我可以解決這個問題或知道我應該如何使用解僱功能。在問候

回答

2

當前視圖控制器的viewWillLayoutSubviews

由於將轉換到另一個視圖控制器時甚至稱。

所以你的情況保護視圖,以便在現場將不會創建兩次(因此,遊戲重啓):

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    print("start vc") 

    // Configure the view. 
    let skView = self.view as! SKView 
    if skView.scene == nil { // This check makes sure we won't create the scene twice 
     skView.showsFPS = true 
     skView.showsNodeCount = true 
     skView.multipleTouchEnabled = true 

     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     skView.ignoresSiblingOrder = true 

     /* Set the scale mode to scale to fit the window */ 
     Scene = GameScene(size: skView.bounds.size) 
     Scene.scaleMode = .AspectFill 
     Scene.viewController = self 

     skView.presentScene(Scene) 
    } 
} 
+1

這完全解決了這個問題,謝謝:)男人 – Cing