0

我有一个 SpriteKit 游戏,它使用SKTextureAtlas.

要访问单个纹理,我使用textureNamed(_:).

现在,我可以通过两种方式做到这一点:

  1. 当我需要纹理时,我可以使用textureNamed(_:)right ,如以下代码所示。在这个假设的场景中,敌人会在场景已经呈现后的某个时间点攻击玩家。因此,textureNamed(_:)即时调用而不是提前调用。
...

private let atlas = SKTextureAtlas(named: "EnemiesAtlas")

func makeEnemyAttack() {
    let texture = atlas.textureNamed("enemyAttack")
}

...
  1. 我可以在首次呈现场景时(甚至在应用程序启动时)提前将纹理存储在属性中。在这种情况下,makeEnemyAttack()只需引用此属性。
...

private let atlas = SKTextureAtlas(named: "EnemiesAtlas")
private var texture: SKTexture?

func makeEnemyAttack() {
    //Do something with texture
}

override func didMove(to view: SKView) {
    texture = atlas.textureNamed("enemyAttack")
}

...

问题:textureNamed(_:)动态使用而不是提前存储结果对性能/内存有什么影响?这两种策略中哪一种是正确的,为什么?

4

0 回答 0