当用户进入后台(双击主页按钮)或接到来电时,游戏将在后台进行。因此,当他们继续游戏时,分数会增加。我需要知道当他们进入后台或接到电话时,如何暂停或停止游戏。我的应用是swift 3,Xcode 8。
发布于 2017-08-25 08:43:20
在AppDelegate.swift中,Xcode默认放置一个名为applicationWillResignActive的方法。这是您应该看到的,除非您编辑或删除了该方法:
func applicationWillResignActive(_ application: UIApplication) {
// ...
}来自Xcode的模板...
应用程序即将从活动状态转换为非活动状态时发送的
。对于某些类型的临时中断(例如来电或SMS消息),或者当用户退出应用程序并开始转换到后台状态时,可能会发生这种情况。使用此方法可暂停正在进行的任务、禁用计时器以及使图形呈现回调无效。游戏应该使用此方法来暂停游戏。
由于此方法是在游戏变为非活动状态之前调用的,因此我建议使用此方法来识别您的游戏已暂停。您可以在此方法中放置所需的任何代码,以实际暂停游戏的特定任务。
希望这能有所帮助!
发布于 2017-08-25 17:04:07
就像约翰说的,你需要暂停游戏..但是要这样做,您需要一个对gamescene实例/对象的引用。下面是一个可以在AppDelegate中使用的静态引用:
class GameScene: SKScene {
static var sharedInstance = GameScene()
override func didMove(to view: SKView) {
sharedInstance = self
}
}然后,在AppDelegate函数中,您可以使用:
GameScene.sharedInstance.isPaused = true // or false发布于 2017-08-25 21:19:08
你应该在applicationWillResignActive中暂停游戏
您应该使用此方法暂停正在进行的任务、禁用计时器并降低OpenGL ES帧速率。游戏应该使用此方法来暂停游戏。处于非活动状态的应用程序应该在等待转换到活动状态或后台状态时执行最少的工作。
在说话的那一刻(早些时候这不是一个案例),当你从后台返回时,例如。返回到活动状态,场景将自动取消暂停。有时这是我们想要的行为,有时不是。
例如,有时您希望游戏在用户从后台返回时保持暂停状态。在本例中,您将从适当的AppDelegate方法触发一个通知。然后,您将在GameScene中捕获此通知,并采取必要的操作(例如,再次暂停游戏,或暂停世界节点,并在其上方显示弹出窗口,让用户在需要时继续...)
暂停也会自动进行。当您转到背景时,场景会暂停。如果你只想让场景停留在暂停状态,你真的不需要做任何事情。
https://stackoverflow.com/questions/45870393
复制相似问题