如何针对特定的SKScene使用applicationWillTerminate?

3

我有一个SKScene,用于显示加入当前房间的玩家。如果其中任何一位玩家离开了房间(通过点击“离开”按钮),他们的玩家列表将被更新。

但是,如果我从其中一个玩家关闭应用程序,该特定玩家仍然留在房间中。我想从applicationWillTerminate调用我的leaveRoom函数,以便所有数据都能正常工作。这是否可能?如何解决这个问题?


作为对 @Alessandro 的回答的补充信息,解决了问题后,请阅读 文档 中的讨论部分,以了解何时实际调用此方法,以及何时不调用。 - Whirlwind
1个回答

3
你可以创建一个观察者来拦截它:
override func didMove(to view: SKView) {        
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(GameScene.applicationWillTerminate(notification:)),
            name: NSNotification.Name.UIApplicationWillTerminate,
            object: nil)
}
func applicationWillTerminate(notification: NSNotification) {
   // put your code here
}

您可以移除观察者来实现:

override func willMove(from view: SKView) {
    NotificationCenter.default.removeObserver(self)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接