Sprite kit 当用户进入后台或接到呼叫时,如何暂停或停止精灵套件游戏

Sprite kit 当用户进入后台或接到呼叫时,如何暂停或停止精灵套件游戏,sprite-kit,Sprite Kit,当用户进入后台(双击home按钮)或接到呼叫时,游戏将在后台进行。因此,当他们继续游戏时,分数会增加。我需要知道当他们进入后台或接到电话时,如何暂停或停止游戏。我的应用程序在swift 3,Xcode 8中。在AppDelegate.swift中,Xcode默认放置一个名为applicationWillResignActive的方法。这是您应该看到的,除非您编辑或删除了该方法: func applicationWillResignActive(_ application: UIApplicati

当用户进入后台(双击home按钮)或接到呼叫时,游戏将在后台进行。因此,当他们继续游戏时,分数会增加。我需要知道当他们进入后台或接到电话时,如何暂停或停止游戏。我的应用程序在swift 3,Xcode 8中。

在AppDelegate.swift中,Xcode默认放置一个名为
applicationWillResignActive的方法。这是您应该看到的,除非您编辑或删除了该方法:

func applicationWillResignActive(_ application: UIApplication) {
    // ...
}
从Xcode的模板

当应用程序即将从活动状态移动到非活动状态时发送 国家。对于某些类型的临时中断,可能会发生这种情况 (如来电或短信)或当用户退出时 应用程序启动并开始转换到后台状态。 使用此方法可以暂停正在进行的任务、禁用计时器和使其无效 图形渲染回调。游戏应使用此方法暂停 比赛

由于此方法是在游戏进入非活动状态之前调用的,因此我的建议是使用此方法来识别您的游戏已暂停。您可以在此方法中放置所需的任何代码,以实际暂停游戏的特定任务


希望这有帮助

就像约翰说的,你需要暂停比赛。。但要做到这一点,您需要一个对游戏场景实例/对象的引用。以下是可以在AppDelegate中使用的静态引用:

class GameScene: SKScene {

  static var sharedInstance = GameScene()

  override func didMove(to view: SKView) {
    sharedInstance = self
  }
}
然后,在AppDelegate函数中,可以使用:

GameScene.sharedInstance.isPaused = true // or false

您应该在以下位置暂停游戏:

您应该使用此方法暂停正在进行的任务、禁用计时器和 降低OpenGL ES的帧速率。游戏应该使用这种方法 暂停比赛。处于非活动状态的应用程序应执行最少的工作 当它等待转换到活动或背景状态时

在讲话的那一刻(Earler,这不是一个案例),当你从背景返回时,例如,返回到活动状态,场景将自动取消暂停。有时这是人们想要的行为,有时不是

例如,当用户从后台返回时,有时您希望游戏暂停。在这种情况下,您将从适当的AppDelegate方法触发通知。然后,您将在游戏场景中捕获此通知并采取必要的操作(例如,再次暂停游戏,或暂停世界节点,并在其上显示弹出窗口,以便用户在需要时继续…)

暂停也会自动进行。转到“背景”时,场景将暂停。如果您只想让场景保持暂停,那么实际上不必做任何事情