5 Stimmen

SpriteKit und SceneKit – Wie kann man ein Spiel komplett pausieren?

Ich habe es geschafft, eine Spielszene mit diesem Code zu pausieren:

override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {

    var touch:UITouch = touches.anyObject() as UITouch 
    pauseText.text = "Weiter"
    pauseText.fontSize = 50
    pauseText.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2)

    /* play/pause button */

    var locationPause: CGPoint = touch.locationInNode(self)

    if self.nodeAtPoint(locationPause) == self.pause {
        println("Pause")
        addChild(pauseText)
        pause.removeFromParent()
        paused = true
    }
    if self.nodeAtPoint(locationPause) == self.pauseText {
        pauseText.removeFromParent()
        paused = false
        addChild(pause)
    }
}

Aber ich habe ein Problem. In regelmäßigen Abständen erstellt das Spiel Objekte und zeigt sie auf dem Bildschirm an. Wenn ich das Spiel pausiere, werden weiterhin Objekte im Hintergrund erstellt, und wenn ich das Spiel fortsetze, erscheinen alle während der Pause erstellten Objekte gleichzeitig auf dem Bildschirm.

Wie kann ich das beheben?

9voto

0x141E Punkte 12543

Sie können das SKLabelNode (oder alles andere) nicht zu Ihrer Szene hinzufügen, während die SKView pausiert ist. Sie müssen zum Ausführungszyklus zurückkehren, damit Ihr Text hinzugefügt wird, bevor das Spiel pausiert wird. Hier ist eine Möglichkeit, dies zu tun:

// Pause-Text oder -Schaltfläche zur Szene hinzufügen
addChild(pauseText)
let pauseAction = SKAction.run {
    self.view?.isPaused = true
}
self.run(pauseAction)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X