我对 SpriteKit 游戏有一个奇怪的问题。当用户打开通知中心或控制中心时,应用程序崩溃。我希望在调用时暂停 worldNode 层并显示 menuNode 层,applicationWillResignActive
当按下主页按钮时它工作正常。我尝试从AppDelegate
函数中暂停我的游戏,并且尝试在游戏开始applicationWillResignActive
时暂停。当使用 Home Button/Home Gesture 时,applicationDidBecomeActive
我尝试NotificationCenter
在这两项工作中使用该方法。ViewController
我应该如何处理?或者这只是 iOS 11 中的一个错误?
我的viewDidLoad
方法中有这个ViewController
NotificationCenter.default.addObserver(self, selector: #selector(appWillResignActive), name: NSNotification.Name.UIApplicationWillResignActive, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(appDidBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
然后每个选择器如果尝试在appDidBecomeActive
和appWillResignActive
@objc func appDidBecomeActive() {
print("appDidBecomeActive")
if GameScene.sharedInstance != nil {
print("presentingMenu")
GameScene.sharedInstance.presentMenuNode()
}
}
@objc func appWillResignActive() {
print("appWillResignActive")
if GameScene.sharedInstance != nil {
print("presentingMenu")
GameScene.sharedInstance.presentMenuNode()
}
}
我觉得我可能试图以错误的方式处理这个问题,但我不明白为什么当 Home 按钮/Home 手势被触发时它会起作用?
编辑:经过更多测试,我发现在 iOS 10 设备上运行时一切正常。但是,当我运行苹果从他们的示例代码中提供的 DemoBots 应用程序时,它不会在 iOS 11 上崩溃,并且基本上可以做我想做的事情,所以必须有更好的方法来处理游戏状态的转换,任何输入表示赞赏。