游戏从后台快速恢复后退出暂停状态

Posted

技术标签:

【中文标题】游戏从后台快速恢复后退出暂停状态【英文标题】:game exits from pause state after resuming it from background in swift 【发布时间】:2014-12-26 09:21:53 【问题描述】:

我正在使用 SpriteKit 开发一款可以在执行期间暂停并可以恢复的游戏。 但是当游戏暂停时按下主页按钮时applicationDidEnterBackground 出现问题,因为当我恢复游戏时,即使游戏之前暂停,实体也会立即开始移动。 我找不到在AppDelegate 中实现applicationDidEnterBackground 和其他相关方法的方法,因为它与我的GameScene.swift 之间没有联系

我实际上是在用代码暂停实体

entitiesLayerNode.paused = true
gameState = .GamePaused

编辑:

我想明确暂停entitiesLayerNode,因为我还有其他想要保留的“移动”节点。问题在于,根据下面给出的建议,该方法会暂停一切!我只需要暂停该层。 我认为这个问题是我无法从视图控制器访问entitiesLayerNode。 我一般用sn-p

let mainScene = scene as GameScene
mainScene.entitiesLayerNode.pause = true

但是 Xcode 给我一个错误,scene 是一个未解析的标识符。

【问题讨论】:

【参考方案1】:

和here差不多

AppDelegate:

func applicationWillResignActive(application: UIApplication) 
    NSNotificationCenter.defaultCenter().postNotificationName("PauseGameScene", object: self)

GameSceneViewController:

override func viewDidLoad() 
    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("pauseGameScene"), name: "PauseGameScene", object: nil)


func pauseGameScene() 
    if self.skView.scene != nil 
        self.skView.paused = self.skView.scene.paused = true
    

【讨论】:

如果我暂停所有场景,这可以工作,但由于我有几个节点,我想只暂停实体层节点,并且这段代码似乎不起作用。此外,我无法从 viewDidLoad 访问 skView,我必须根据您发送的链接更改 pauseGameScene() 好吧,设置所有必要的 IBOutlets 是您的责任。我给了你一个大方向,你应该根据自己的需要调整代码。 我没有 IBOutlet 接口已被编程编码。我的 viewDidLoad 中有一个 skView,但我不知道为什么我无法在 pauseGameScene 中访问它... 感谢这个帖子我暂时解决了:***.com/q/27262903/1139044在我的场景self.view的更新方法中添加以下行self.view?.paused = true

以上是关于游戏从后台快速恢复后退出暂停状态的主要内容,如果未能解决你的问题,请参考以下文章

CocosCreator原生平台退出游戏,暂停和继续

linux入门学习

求助python多线程,执行到100多个停止了

Linux Shell 快捷键

Android怎么实现从桌面点击图标后返回上一次退出该应用的状态

Linux基础