2015-11-01 90 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

相关问题