我构建了一个带有暂停按钮的游戏,它显示了一个新的模式ViewController,其中包含当前的暂停菜单,并使用以下功能暂停场景(该函数位于场景中,通过协议和委托调用):
func pause(isPaused: Bool) {
let pauseAction = SKAction.run {
self.view?.isPaused = isPaused
}
self.run(pauseAction)
}暂停场景和显示模态视图控制器工作,但当我回到现场通过一个松开海格现场没有解除暂停。
暂停按钮与场景处于相同的视图中。为了与“暂停”菜单中的场景进行通信,我使用了一个展开单元,其中我通过协议和委托调用暂停函数。
我在“暂停”菜单上显示:
@IBAction func PauseMenuButton(_ sender: Any) {
let vc = storyboard!.instantiateViewController(withIdentifier: "PauseMenuVC")
vc.providesPresentationContextTransitionStyle = true
vc.definesPresentationContext = true
vc.modalPresentationStyle = .overCurrentContext
present(vc, animated: true, completion: nil)
SceneIsPausedDelegate.pause(isPaused: true)
}然后回到现场:
@IBAction func unwindToGameVC(segue: UIStoryboardSegue) {
SceneIsPausedDelegate.pause(isPaused: false)
} 我认为这个函数从来没有被调用过,因为它在场景中,因为它被暂停了,is no执行。
发布于 2018-11-15 07:18:44
我改变了:
func pause(isPaused: Bool) {
let pauseAction = SKAction.run {
self.view?.isPaused = isPaused
}
self.run(pauseAction)
}至:
func pause(isPaused: Bool) {
self.view?.isPaused = isPaused
}它在没有动作的情况下唤醒。
发布于 2018-11-14 15:27:15
SKView暂停和SKScene暂停的行为不同
当一个SKView被暂停时,它不会在场景中调用更新函数。
当SKScene暂停时,SKView仍然会调用场景上的更新函数,场景不会调用子节点上的更新函数。
在您的场景中,您正在调用SKView上的暂停。这意味着你在场景中运行的任何动作都不会触发,因为更新永远不会发生。
我建议要么切换到SKScene暂停,要么不使用一个动作来暂停和取消暂停。
https://stackoverflow.com/questions/53284680
复制相似问题