我有一个按钮可以在我的代码上暂停游戏。我想要的是使用该按钮暂停游戏会出现一条消息,显示“Paused”。但是,由于场景已暂停,因此不会出现该消息。
我现在拥有的是一个SKLabelNode,它的alpha开头为0.0,并且当用户暂停游戏时,它会使用fadeInWithDuration()更改为1.0。然后,当用户再次按下按钮时,它会通过fadeOutWithDuration()变回0.0。问题在于,暂停场景时,带有fadeInWithDuration()的SKAction无法运行。
我怎样才能做到这一点?
最佳答案
苹果公司在“DemoBots”中也使用的最佳方法是创建一个停顿而不是场景的世界节点。
创建一个worldNode属性
class GameScene: SKScene {
let worldNode = SKNode()
}
将其添加到didMoveToView中的场景
addChild(worldNode)
然后将您需要暂停的所有内容添加到worldNode中。这包括通常由场景执行的 Action (例如计时器,敌人生成等)
worldNode.addChild(someNode)
worldNode.run(someSKAction)
比起您的暂停功能,您说
worldNode.isPaused = true
physicsWorld.speed = 0
和简历
worldNode.isPaused = false
physicsWorld.speed = 1
如果您有在暂停时要忽略的内容,还可以在Update函数中添加额外的检查。
override func update(_ currentTime: CFTimeInterval) {
guard !worldNode.isPaused else { return }
// your code
}
这样,当您暂停游戏时,添加暂停标签或其他UI会容易得多,因为您实际上尚未暂停场景。您也可以运行所需的任何操作,除非该操作已添加到worldNode或worldNode的子级中。
希望这可以帮助
关于ios - SpriteKit : run action while scene is paused,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35536521/