如何在用户进入后台或接听电话时暂停或停止精灵套件游戏

时间:2017-08-24 20:30:36

标签: sprite-kit

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

3 个答案:

答案 0 :(得分:1)

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

func applicationWillResignActive(_ application: UIApplication) {
    // ...
}

来自Xcode的模板......

  

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

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

希望这有帮助!

答案 1 :(得分:1)

就像John说的那样,你需要暂停游戏......但要这样做,你需要一个对gamescene实例/对象的引用。这是一个可以在AppDelegate中使用的静态引用:

class GameScene: SKScene {

  static var sharedInstance = GameScene()

  override func didMove(to view: SKView) {
    sharedInstance = self
  }
}

然后,在AppDelegate函数中,您可以使用:

GameScene.sharedInstance.isPaused = true // or false

答案 2 :(得分:0)

你应该暂停游戏applicationWillResignActive

  

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

在发言时(预告片不是这样),当你从背景回来时,例如。返回活动状态,场景将自动取消暂停。有时这是期望的行为,有时则不是。

例如,有时您希望自己的游戏在用户从后台返回时保持暂停状态。在这种情况下,您将从适当的AppDelegate方法触发通知。然后,您将在GameScene中捕获此通知并采取所需的操作(例如,再次暂停游戏,或暂停一个世界节点,并在其上显示弹出窗口以让用户在他想要的时候继续...)

自动暂停。当你去背景时,场景暂停。如果您只是希望场景保持暂停状态,则无需执行任何操作。