2016-03-22 9 views
4

Wenn mein Spiel in den Hintergrundmodus wechselt, möchte ich das Spiel vollständig anhalten. Im Moment ist es das, was ich tue:Unterbrechen der SceneKit-Szene bei der App-Eingabe im Hintergrund

Im AppDelegate:

func applicationWillResignActive(application: UIApplication) { 
    gameViewControllerDelegate?.pauseGame() 
} 

In meinem Game-Controller:

func pauseGame() { 
    buttonPausePressed(buttonPausePlay) 
} 

func buttonPausePressed(sender: UIButton!) { 
    scnView?.scene?.paused = true 
    stopMusic() 
    let exampleImage = UIImage(named: "16-play")?.imageWithRenderingMode(.AlwaysTemplate) 
    sender.setImage(exampleImage, forState: UIControlState.Normal) 
} 

Die Methode wird aufgerufen, und das Bild der Schaltfläche geändert wird. Sogar das Spiel ist pausiert. Aber wenn ich öffnen Sie die App erneut und un-Pause es mit:

scnView?.scene?.paused = false 

alle Grafiken Änderungen und andere seltsame Dinge passieren. Es scheint, als ob die SCNActions nie pausiert wurden. Irgendwelche Ideen?

Antwort

3

Ich hatte das gleiche Problem. In Ihrem AppDelegate.swift

func applicationWillResignActive(application: UIApplication) 
{ 
    let viewControllers = self.window?.rootViewController?.childViewControllers 
     for vc in viewControllers! 
     { 
      if vc.isKindOfClass(GameViewController) 
      { 
       let view = vc as! GameViewController 
       view.comesFromBackground() 
      } 
     } 
    } 

Und dann, in Ihrem GameViewController:

func comesFromBackground() 
{ 
    let skView: SKView = self.view as! SKView 
    let scene = skView.scene as! GameScene 
    scene.comesFromBackground = true 
} 

schließlich in Ihrem GameScene:

override func update(currentTime: CFTimeInterval) 
{ 
    if comesFromBackground{ 
     comesFromBackground = false 
     gameViewController.pauseScene() 
    } 
} 

Variable comesFromBackground ist boolean. Der Zweck ist, wenn Sie die App erneut öffnen, setzen Sie den boolean in Ihrem SpielScene und wieder stoppen Sie das Spiel.

Ich hoffe, Ihnen mit dieser

zu helfen
Verwandte Themen