我应该在课堂上或初始化者中存储SKTextures吗?

时间:2015-09-01 05:31:57

标签: sprite-kit

所以我只是想知道哪个代码示例将考虑场景打开的整个时间使用最少量的ram。

class Scene: SKScene {
var t1 = SKTexture(imageNamed: "Happy")
var sprite = SKSpriteNode()

  func loadS()
  {
    sprite = SKSpriteNode(texture: t1)
    //SEt position scale and add to parent
  }
}

VS

class Scene: SKScene {
var sprite = SKSpriteNode()

  func loadS()
  {
    sprite = SKSpriteNode(texture: SKTexture(imageNamed: "happy"))
    //SEt position scale and add to parent
  }
}

我遇到了性能问题所以我只是想尽可能地让每一点性能得以实现!

还可以使用分析器来查看运行代码或代码块需要多长时间?

1 个答案:

答案 0 :(得分:2)

如果你想在整个应用程序中保持精灵内存(这将以极低的内存成本提高性能),那么只需在创建精灵时选择纹理(选项2)。另一方面,如果你需要初始化大量使用相同纹理的精灵节点,那么是的,将纹理保持为全局变量可能是值得的。否则,没有必要,因为精灵有自己的纹理属性,保留SKTexture。

在开始担心性能之前,请确保您首先处于发布模式而不是调试,并且您不在模拟器上。 不要将模拟器的表现视为面值。如果使用实际设备,则会降低CPU使用率!

现在,如果你现在仍然担心,那么你必须有很多纹理和大量物理。实际上,您可以使用分析器来查看代码段运行多长时间。查看Time Profiler工具:official documentation from Apple
您将能够看到进程运行了多长时间并使用它给出的调用堆栈信息可以将某些代码运行的时间拼凑在一起。从那里你可以根据自己的意愿进行优化。祝你好运。