ios - 我试图在退出应用程序时暂停 Sprite Kit 游戏

标签 ios swift sprite-kit

当我在应用程序中时,我可以暂停我所创建的游戏。但是,当我尝试调用我在 App Delegate 的 applicationWillResignActive 函数中创建的暂停函数时,它根本不起作用。这是我尝试在应用程序委托(delegate)文件中使用的代码。

func applicationWillResignActive(_ application: UIApplication) {
    GamePlayScene.instance.isPaused = true
    print("Game is Paused")
}

print 语句被调用,所以我知道该函数正在被调用。然而,游戏仍然保持活跃。我正在尝试调用与我在 GamePlayScene 中使用的相同的 isPaused 函数。

有效的一件事是,如果我只使用 SpriteKit 中的正常暂停功能,但是,我在打开应用程序后找不到恢复游戏的方法。例如,我可以使用这个。

func applicationWillResignActive(_ application: UIApplication) {
    pause()
    print("Game is Paused")
}

这似乎有效,但整个应用程序只是卡住打开,无法继续运行。大家觉得怎么样?

最佳答案

想通了。由于我没有看到其他人在涉及 SpriteKit 游戏时有答案,所以我将发布答案。这是我的代码。

let notificationCenter = NotificationCenter.default
    notificationCenter.addObserver(self, selector: #selector(appMovedCameBack), name: Notification.Name.UIApplicationDidBecomeActive, object: nil)

@objc func appMovedCameBack() {
    print("App Came Back!")

    self.scene?.isPaused = true

    GamePlayController.instance.pauseBtn?.alpha = 0

    createPausePanel()
}

我正在调用创建 PausePanel 的函数并将其添加到场景中。这就是 createPausePanel() 函数。我还设置了 scene.isPaused = true。这就是我解决问题的方法。

关于ios - 我试图在退出应用程序时暂停 Sprite Kit 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51663426/

相关文章:

swift - 在 SpriteKit 中显示 Game Center 排行榜

objective-c - 调用 didSelectRowAtIndexPath 时激活单元格的附属 View (UISwitch)

ios - 如何触发 scrollViewWillEndDragging 事件?

ios - 安装新的 cocoapod 后缺少所需的模块

swift - 如何将发布者转换为 CurrentValueSubject?

ios - 使用父类(super class)型的引用快速声明子类型的变量

iphone - iOS开发中关于layer.shadow

ios - 适用于 iOS arm64 架构的支持 OpenSSL FIPS 的库

iOS - 如何在数据准备好后以编程方式初始化和插入 UICollectionViewCell?

ios - 如何在 Swift 中将 SKScene 覆盖在 SCNScene 上?