繁体   English   中英

从AppDelegate调用GameScene方法(Swift 3,SpriteKit,Xcode 8)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM