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