【问题标题】:How to load files in memory for better scene transition?如何在内存中加载文件以获得更好的场景过渡?
【发布时间】:2017-06-05 23:19:50
【问题描述】:

当我过渡到我的游戏场景时,会出现巨大的延迟,并且 FPS 下降得非常低。我知道一个事实是由于我的场景中有大图像。这些图像用于资产中的 Skspritenodes。我正在循环播放一个场景。当玩家输掉比赛时,游戏会通过转换到相同的场景重新开始。无论如何我可以将图像加载到内存中并将它们永远保存在那里,而不是每次移动到游戏场景时它们都会被删除和加载?

如果您要建议纹理和图集预加载。请具体说明如何以及在何处使用预加载代码。还有如何设置图集纹理并使用它们。我已经尝试过这种方法,不幸的是它不起作用。也许我做错了。

谢谢,

【问题讨论】:

  • 你可以在异步模式下加载你的场景,见stackoverflow.com/questions/38601845/slow-skscene-transition/…
  • 我试过了,但它不起作用。如果我不使用它,我会得到相同的结果。
  • 什么时候调用 preloadGameScene() ?
  • 我在 didmove 中调用查看。
  • 不要一次加载所有内容,您需要将其分解

标签: ios sprite-kit xcode8 game-physics scene


【解决方案1】:

从 cmets 中提取,有多种方法可以分解加载。这是我脑海中突然出现的一个:

class Scened: SKScene {

  var needsLoading = false

  func loadChunk1() {}
  func loadChunk2() {}
  func loadChunk3() {}
  func loadChunk4() {}
  func loadChunk5() {}

  override func didMove(to view: SKView) {
    if needsLoading { loadChunk1() }
  }
  override func didEvaluateActions() {
    if needsLoading { loadChunk2() }
  }
  override func didSimulatePhysics() {
    if needsLoading { loadChunk3() }
  }
  override func didApplyConstraints() {
    if needsLoading { loadChunk4() }
  }
  override func didFinishUpdate() {
    if needsLoading {
      loadChunk5()
      // Disable loading after the last chunk:
      needsLoading = false
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多