2014-09-13 2 views
5

мне удалось приостановить игру сцены с этим кодом:Как полностью приостановить игру? SpriteKit/SceneKit [СВИФТ]

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

Но у меня есть проблема. Все случайные интервалы игры создают объекты и отображают их на экране. Когда я приостанавливаю игру, он продолжает создавать объекты в фоновом режиме, и когда я возобновляю игру, все объекты, созданные во время паузы, появляются одновременно на экране.

Как я могу это исправить?

+1

Установить scene.view.paused = true или false, чтобы приостановить/возобновить игру. – 0x141E

+0

Спасибо! Он работает, но ярлык pauseText не отображается. Как я могу сделать? – Haox

ответ

8

Вы не можете добавить SKLabelNode (или что-нибудь еще) к своей сцене, пока SKView приостановлен. Вам нужно будет вернуться в цикл выполнения, чтобы ваш текст был добавлен до приостановки игры. Вот один из способов сделать это:

// Add pause text or button to scene 
addChild(pauseText) 
let pauseAction = SKAction.run { 
    self.view?.isPaused = true 
} 
self.run(pauseAction) 
+0

Он отлично работает! Большое спасибо !! Я думал об этих правилах (добавьте ярлык перед паузой), поэтому я пишу код для текста перед кодом для приостановки игры. Но я не думал, что требуется сделать еще одну функцию. Вы можете мне объяснить? – Haox

+2

Добавление дочернего узла в сцену выполняется не сразу. Он добавляется после того, как вы вернетесь с прикосновенийBegan. Оператор scene.view.paused выполняется немедленно (или имеет более высокий приоритет), поэтому он выполняется до того, как ваш SKLabelNode будет добавлен в сцену. – 0x141E

Смежные вопросы