我有一个iOS SpriteKit游戏,它有一个移动节点。按暂停按钮时,将调用node.isPaused = true
行。但是,如果你按下暂停,然后最小化应用程序,并重新启动它,节点就会恢复移动,即使在透明的“暂停”菜单下也是如此。
我从以下答案中尝试了这个命题:Answer1。但是,即使我在任何状态下调用场景的pauseGame
方法,该函数也会被调用,但即使在暂停菜单下,节点也会重新开始移动。
我也尝试过以下答案:Answer2。但CBApplicationDidBecomeActive()
甚至没有被调用。
我甚至尝试在链接1的方法中使用scene?.view?.isPaused = true
,但它不起作用。
请帮忙。
我知道那里有很多类似的问题,但它们似乎都没有帮助解决我的问题。 (甚至,第二个链接的问题甚至没有得到接受的答案)
答案 0 :(得分:3)
将pauseGame()和resumeGame()方法更改为:
private func pauseGame() {
node.speed = 0.0
gameState = .paused
pauseLayer.run(SKAction.fadeAlpha(to: 0.5, duration: 1))
}
private func resumeGame() {
pauseLayer.run(.fadeOut(withDuration: 1))
node.speed = 1.0
gameState = .inProgress
}
请注意,我使用的是speed属性而不是isPaused属性......这就是你需要做的所有区别。无法真正说明为什么会发生这种情况,因为这种行为没有记录,但我已经看过了,并且在我以前的一些帖子中可能更详细地写了它。