我有一个按钮可以在我的代码中暂停游戏。我想要的是使用该按钮暂停游戏会出现一条消息,显示“已暂停”。但是,由于场景已暂停,因此不会出现该消息。
我现在拥有的是一个 SKLabelNode,开始时 alpha 为 0.0,当用户暂停游戏时,它会通过 fadeInWithDuration() 更改为 1.0。然后,当用户再次按下按钮时,它会通过 fadeOutWithDuration() 变回 0.0。问题是当场景暂停时,带有 fadeInWithDuration() 的 SKAction 不会运行。
我怎样才能做到这一点?
最佳答案
Apple 在“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
如果暂停时有想忽略的内容,您还可以在更新函数中添加额外的检查。
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/