![](/img/trans.png)
[英]Displaying a UIAlertController in GameScene (SpriteKit/Swift)
[英]Call GameScene method from AppDelegate (Swift 3, SpriteKit, Xcode 8)
我正在使用Spritekit和swift 3来创建一个游戏,我的问题是当我尝试调用我的pauseGame()
类(来自SKScene的子类)时,从applicationWillResignActive(_ application: UIApplication)
方法中的AppDelegate文件中调用我的pauseGame()
applicationWillResignActive(_ application: UIApplication)
方法。
我已经尝试实例化GameScene类,然后以这种方式调用我的AppDelegate文件中的方法,虽然没有编译器错误它不起作用:
func applicationWillResignActive(_ application: UIApplication) {
if let gameScene = GameScene(fileNamed: "GameScene") {
gameScene.pauseGame()
}
}
我该如何解决这个问题? 提前致谢。
您正在创建GameScene的新实例。 要暂停现有实例,您需要在AppDelegate中添加对它的引用。
注册GameScene类以便在应用程序进入后台时接收通知的更好解决方案。 这是将这些类与AppDelegate耦合的一个很好的替代方法。
在你的GameScene类中,在viewDidLoad()函数中添加它:
let app = UIApplication.shared
//Register for the applicationWillResignActive anywhere in your app.
NotificationCenter.default.addObserver(self, selector: #selector(GameScene.applicationWillResignActive(notification:)), name: NSNotification.Name.UIApplicationWillResignActive, object: app)
将此函数添加到GameScene类以对收到的通知做出反应:
func applicationWillResignActive(notification: NSNotification) {
pauseGame()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.