swift - 如何在不出现性能问题的情况下暂停和停止 SKScene?

标签 swift xcode sprite-kit skscene

我正在 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/

相关文章:

ios - 如何在 Swift 中向上滚动整个表格 View ?

ios - UITableView 中的复选框更改和还原图像

swift - 创建无图像的无尽背景

ios - XE8.1 : file was built for archive which is not the architecture being linked (arm64)

ios - 在项目中导航

swift - 在两个物体的第一次碰撞中增加了 2 分。在另一次碰撞之后,uz 只添加一个分数

swift - SKEmitterNode 在场景重启时导致崩溃

ios - 如何将高分保存并打印到下一个场景?

ios - 返回值之前等待委托(delegate)执行

iphone - 没有配备兼容 iOS 版本的已配置 iOS 设备 - 所提供的答案均无济于事