我正在 Xcode 中使用 Swift3 编写程序。我在我的程序中使用 SpriteKit 和 SKScene。如您所知,gamescene.sks 中有一个始终运行的预定义更新函数(即使 View 发生更改)。
我知道“self.scene.view.paused = YES;”不适用于总是被调用的更新函数。
有什么方法可以暂停和停止SKScene及其更新功能吗?
最佳答案
Apple 的 DemoBot 始终是一个值得关注的好项目。
暂停游戏的最佳方法是创建一个世界节点并暂停该节点,而不是暂停 skView。
let worldNode = SKNode()
将其添加到 GameScene 中的 didMoveToView 中。
addChild(worldNode)
然后将您想要暂停的所有节点(或 SKActions)添加到 worldNode
worldNode.addChild(SOMENODE)
worldNode.addChild(SOMENODE2)
比你说的暂停方法
worldNode.isPaused = true
physicsWorld.speed = 0
在你的简历方法中你说
worldNode.isPaused = false
physicsWorld.speed = 1
与更新方法相比,如果 worlNode 暂停,您可以提前退出
override func update(_ currentTime: TimeInterval) {
guard !worldNode.isPaused else { return }
// rest of your code
}
希望这有帮助。
关于swift - 如何在不出现性能问题的情况下暂停和停止 SKScene?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40130340/