【问题标题】:SKView paused automatically resumesSKView 暂停自动恢复
【发布时间】:2015-04-18 13:59:18
【问题描述】:

我正在快速设计一个 SpriteKit 游戏,在我的游戏 SKScene 中,当我想暂停游戏时,我有一个方法被调用。它看起来像这样:

func pause() {
    view?.paused = true
}

游戏完美暂停,但在看似任意的时间量(1 秒到 120 秒)之后,游戏只是取消暂停/恢复游戏,而无需调用我的 resume() 方法。我知道精灵套件会在应用程序激活时自动恢复游戏,但我在 applicationDidBecomeActive 中设置了一个断点,它没有被调用。有谁知道为什么会这样?

我知道我可以设置自己的 paused 属性并在每个更新循环中检查它,但如果我能让它工作,我更喜欢这个优雅的解决方案!

【问题讨论】:

  • 所以请稍等.. 游戏会在它仍然处于活动状态时自行恢复,或者当您返回应用程序时?
  • 当它仍然有效时
  • 你如何完全删除你的 resume 方法,看看它是否仍然恢复......或者至少在那里放置一个断点并检查它的调用位置
  • 从不调用 resume 方法
  • @mogelbuster 你在哪里调用你的 pause() 方法?我也很好奇 showPauseScreen() 是否被执行?

标签: ios swift sprite-kit skview


【解决方案1】:

问题是我对 ADBannerViewDelegate 的实现。这是罪魁祸首:

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    skView.paused = false
    println("bannerView:didFailToReceiveAdWithError called inside GameViewController class")
}

我通过将这些 println 调用放入每个具有 .paused = false 语句的方法中来解决了这个问题。大多数情况下,横幅都可以正常加载,但每逢蓝月亮,它们都会失败并调用该方法。

【讨论】:

  • 尝试这样做:if banner != nil {skiver.paused = false println("your println...")} 这应该可以帮助你
猜你喜欢
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多