我成功使用以下代码暂停了一个场景游戏:
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) { var touch:UITouch = touches.anyObject() as UITouch pauseText.text = "Continuer" pauseText.fontSize = 50 pauseText.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2) /* bouton play/pause */ 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) } }
但是我有一个问题。游戏中的所有随机间隔都会创建对象并将其显示在屏幕上。当我暂停游戏时,它将继续在后台创建对象,而当我继续游戏时,在暂停期间创建的所有对象将同时显示在屏幕上。
我该如何解决?
暂停SKView时,无法将SKLabelNode(或其他任何东西)添加到场景中。您将需要返回运行循环,以便在暂停游戏之前添加您的文本。这是一种方法:
// Add pause text or button to scene addChild(pauseText) let pauseAction = SKAction.run { self.view?.isPaused = true } self.run(pauseAction)