微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决'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 举报,一经查实,本站将立刻删除。