1

私の一時停止システムはゲーム内から完全に機能し、アプリがバックグラウンドに移動してから再びアクティブになると、ゲームは一時停止したままになりますが、現在の問題は、アクティブになったときに一時停止画面が表示されないことです.

AppDelegate:

func applicationDidBecomeActive(application: UIApplication) {

    NSNotificationCenter.defaultCenter().postNotificationName("Pause", object: nil)

}

ビューコントローラー:

override func viewDidLoad() {
        super.viewDidLoad()

        let scene  = GameScene()
        // Configure the view.
        let skView =  self.view as! MainView

        NSNotificationCenter.defaultCenter().addObserver(skView, selector: "setStayPaused", name: "Pause", object: nil)

        skView.ignoresSiblingOrder = true
        scene.scaleMode = .AspectFill
        scene.size = skView.bounds.size

        skView.presentScene(scene)
    }

MainView (私のカスタム skView):

class MainView: SKView {

    var stayPaused = false as Bool

    override var paused: Bool {
        get {
            return super.paused
        }
        set {
            if (!stayPaused) {
                super.paused = newValue
            }
            stayPaused = false
        }
    }

    func setStayPaused() {
        if (super.paused) {
            self.stayPaused = true
        }
    }
}

ゲームシーン:

  override func didMoveToView(view: SKView) {
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "pauseGame", name: "Pause", object: nil)
}

func pauseGame() {

        if isFirstTime == false { // to make sure that the app did not just get launched

            pauseScreen.hidden = false // doesn't show
            pauseButton.hidden = false // doesn't show
            view?.paused = true
            scene?.paused = true
        }
}
4

1 に答える 1