首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在用户进入后台或接到来电时暂停或停止精灵工具包游戏

如何在用户进入后台或接到来电时暂停或停止精灵工具包游戏
EN

Stack Overflow用户
提问于 2017-08-25 04:30:36
回答 3查看 1.2K关注 0票数 4

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

EN

回答 3

Stack Overflow用户

发布于 2017-08-25 08:43:20

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

代码语言:javascript
复制
func applicationWillResignActive(_ application: UIApplication) {
    // ...
}

来自Xcode的模板...

应用程序即将从活动状态转换为非活动状态时发送的

。对于某些类型的临时中断(例如来电或SMS消息),或者当用户退出应用程序并开始转换到后台状态时,可能会发生这种情况。使用此方法可暂停正在进行的任务、禁用计时器以及使图形呈现回调无效。游戏应该使用此方法来暂停游戏。

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

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2017-08-25 17:04:07

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

代码语言:javascript
复制
class GameScene: SKScene {

  static var sharedInstance = GameScene()

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

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

代码语言:javascript
复制
GameScene.sharedInstance.isPaused = true // or false
票数 1
EN

Stack Overflow用户

发布于 2017-08-25 21:19:08

你应该在applicationWillResignActive中暂停游戏

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

在说话的那一刻(早些时候这不是一个案例),当你从后台返回时,例如。返回到活动状态,场景将自动取消暂停。有时这是我们想要的行为,有时不是。

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

暂停也会自动进行。当您转到背景时,场景会暂停。如果你只想让场景停留在暂停状态,你真的不需要做任何事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45870393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档