【问题标题】:How to pause and stop SKScene without having performance issues?如何在没有性能问题的情况下暂停和停止 SKScene?
【发布时间】:2016-10-19 11:36:05
【问题描述】:

我正在 Xcode 中使用 Swift3 编写程序。我在我的程序中使用 SpriteKit 和 SKScene。如您所知,gamescene.sks 中有一个预定义的更新函数始终运行(即使视图更改)。

我知道“self.scene.view.paused = YES;”不适用于始终调用的更新函数。

有什么方法可以暂停和停止 SKScene 及其更新功能?

【问题讨论】:

  • 你在说什么? View.paused 停止视图调用 spritekits 更新方法,scene.pause 停止所有子项,但更新仍然发生
  • @Knight0fDragon 你总是对我的问题发表评论,但你总是什么也没说。我在问如何暂停/停止更新功能。换句话说,我是在说如何让更新仍然没有发生。我知道“self.scene.view.paused = YES;”不会停止更新,我在问那个人该怎么做。
  • 你当时没有理解我的评论,“self.scene.view.paused = YES;”确实暂停了更新,这就是我感到困惑的原因

标签: swift xcode sprite-kit skscene


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2012-08-18
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多