首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit暂停场景(Swift4.2)

SpriteKit暂停场景(Swift4.2)
EN

Stack Overflow用户
提问于 2018-11-13 15:50:19
回答 2查看 216关注 0票数 0

我构建了一个带有暂停按钮的游戏,它显示了一个新的模式ViewController,其中包含当前的暂停菜单,并使用以下功能暂停场景(该函数位于场景中,通过协议和委托调用):

代码语言:javascript
复制
func pause(isPaused: Bool) {
    let pauseAction = SKAction.run {
        self.view?.isPaused = isPaused
    }
    self.run(pauseAction)
}

暂停场景和显示模态视图控制器工作,但当我回到现场通过一个松开海格现场没有解除暂停。

暂停按钮与场景处于相同的视图中。为了与“暂停”菜单中的场景进行通信,我使用了一个展开单元,其中我通过协议和委托调用暂停函数。

我在“暂停”菜单上显示:

代码语言:javascript
复制
@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)
}

然后回到现场:

代码语言:javascript
复制
@IBAction func unwindToGameVC(segue: UIStoryboardSegue) {
    SceneIsPausedDelegate.pause(isPaused: false)
}  

我认为这个函数从来没有被调用过,因为它在场景中,因为它被暂停了,is no执行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-15 07:18:44

我改变了:

代码语言:javascript
复制
func pause(isPaused: Bool) {
    let pauseAction = SKAction.run {
    self.view?.isPaused = isPaused
}
    self.run(pauseAction)
}

至:

代码语言:javascript
复制
func pause(isPaused: Bool) {
    self.view?.isPaused = isPaused
}

它在没有动作的情况下唤醒。

票数 1
EN

Stack Overflow用户

发布于 2018-11-14 15:27:15

SKView暂停和SKScene暂停的行为不同

当一个SKView被暂停时,它不会在场景中调用更新函数。

SKScene暂停时,SKView仍然会调用场景上的更新函数,场景不会调用子节点上的更新函数。

在您的场景中,您正在调用SKView上的暂停。这意味着你在场景中运行的任何动作都不会触发,因为更新永远不会发生。

我建议要么切换到SKScene暂停,要么不使用一个动作来暂停和取消暂停。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53284680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档