【问题标题】:Running a function when the game becomes active iOS - SpriteKit游戏激活时运行一个函数 iOS - SpriteKit
【发布时间】:2015-09-30 23:27:55
【问题描述】:

swift / SpriteKit 的游戏中,当用户退出应用并再次打开它时,我遇到了问题。如果游戏在暂停菜单上并且所有内容都已暂停,则在重新加载游戏时游戏将取消暂停,但暂停菜单上的标签不会消失。重新打开游戏时如何保持游戏暂停?我试过了

    func applicationWillEnterForeground(application: UIApplication) {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    let scene = GameScene(size: CGSize(width: 2048, height: 1356))
    scene.view?.paused = true
}

但这并没有做任何事情。我也试过pause(),但这把事情搞砸了。任何帮助表示赞赏。

【问题讨论】:

    标签: ios iphone swift sprite-kit swift2


    【解决方案1】:

    您想使用applicationWillResignActive 函数来暂停您的场景,方法是执行类似scene.speed = 0 之类的操作,这将正确暂停您的场景(不知道为什么,但仅使用pause 并不能很好地工作) .您还可以在此处显示暂停菜单(您似乎正在这样做)。

    然后您想使用applicationDidBecomeActive 函数继续您的游戏。在这里,您检查是否(在这里猜测)您的“恢复”按钮被按下,并在响应方法中设置scene.speed = 1。在这里您的响应方法,执行任何需要启动备份的操作(动画、动作、隐藏暂停菜单或音乐)。

    我会说,这是我使用的两个功能,您可以随意使用您想要的具有开/关功能的任何两个功能。我发现这些非常可靠。

    【讨论】:

    • Xcode 说“'SKView' 类型的值没有成员'speed'
    • 我的错,看我的编辑。你想使用scene.speed
    • 我在 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { , func applicationWillResignActive(application: UIApplication) { , func applicationDidEnterBackground(application : UIApplication) { 和 func applicationWillEnterForeground(application: UIApplication) { 但它没有改变任何东西......
    • 你知道,我想我读错了你的问题,我以为你试图让暂停菜单在用户返回游戏时消失。给我一点时间再次编辑我的答案。
    • 我正在尝试让暂停菜单消失。或者,让游戏暂停,因为在游戏继续时暂停菜单会填满屏幕。我尝试了 scene.paused = true, scene.unpause() (摆脱了暂停菜单)以及您建议的内容。我在 AppDelegate 中编写的代码都没有任何影响,这是什么原因造成的?
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多