我有一个 SpriteKit 游戏,它使用SKTextureAtlas
.
要访问单个纹理,我使用textureNamed(_:)
.
现在,我可以通过两种方式做到这一点:
- 当我需要纹理时,我可以使用
textureNamed(_:)
right ,如以下代码所示。在这个假设的场景中,敌人会在场景已经呈现后的某个时间点攻击玩家。因此,textureNamed(_:)
是即时调用而不是提前调用。
...
private let atlas = SKTextureAtlas(named: "EnemiesAtlas")
func makeEnemyAttack() {
let texture = atlas.textureNamed("enemyAttack")
}
...
- 我可以在首次呈现场景时(甚至在应用程序启动时)提前将纹理存储在属性中。在这种情况下,
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(_:)
动态使用而不是提前存储结果对性能/内存有什么影响?这两种策略中哪一种是正确的,为什么?