2016-03-22 20 views
4

Oyunum arka plan moduna girdiğinde, oyunu tamamen duraklatmak isterim.Uygulamaya girerken SceneKit sahnesini araya sokma Arka plana girme

AppDelegate olarak: Şu anda bu benim yaptığım benim oyun kumandası olarak

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

:

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) 
} 

yöntemi çağrılan ve düğmenin görüntü değiştirilir. Oyun bile duraklatıldı. Ama tekrar uygulamayı açıp kullanarak un-durakladığınızda:

scnView?.scene?.paused = false 

tüm grafik değişiklikleri ve diğer garip şeyler olur. SCNActions hiç durdurulmamış gibi görünüyor. Herhangi bir fikir?

cevap

3

Aynı problem vardı. senin 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() 
      } 
     } 
    } 

Sonra olarak, GameViewController içinde:

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

Son olarak, GameScene içinde:

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

Değişken comesFromBackground boolean. Amaç, uygulamayı tekrar açtığınızda oyunun boolean'ını setScene'de ayarlamanız ve oyunu durdurmanızdır. Bu

İlgili konular