我正在开发一款使用SpriteKit的游戏,可以在执行期间暂停并可以恢复。
但是当游戏暂停时按下主页按钮时applicationDidEnterBackground
出现问题,因为当我恢复游戏时,即使游戏暂停,实体也会立即开始移动。
我找不到在applicationDidEnterBackground
中实施AppDelegate
和其他相关方法的方法,因为它与我的GameScene.swift
我实际上是用代码暂停实体
entitiesLayerNode.paused = true
gameState = .GamePaused
编辑:
我想明确暂停entitiesLayerNode
,因为我还有其他的移动'我想保留的节点。问题在于,根据下面给出的建议,该方法会暂停一切!我只需要暂停那一层。
我认为问题在于我无法从View Controller访问entitiesLayerNode
。
我通常使用代码段
let mainScene = scene as GameScene
mainScene.entitiesLayerNode.pause = true
但Xcode给我一个错误,scene
是一个未解析的标识符。
答案 0 :(得分:2)
与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
}
}