'textureNamed(_:)':需要时使用还是提前存储在属性中?

问题描述

我有一个使用 SKTextureAtlas 的 SpriteKit 游戏。

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

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

  1. 我可以在需要纹理时使用 textureNamed(_:),如下面的代码所示。在这个假设场景中,在场景已经呈现之后的某个时刻,敌人会攻击玩家。因此,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(_:) 而不是提前存储结果对性能/内存的影响是什么?这两种策略中哪一种是正确的,为什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)