我做了一些研究,但似乎找不到任何可以清楚解释如何在动画中预加载单个纹理和纹理的内容。我目前正在使用Atlas
's in Assets.xcassets
对相关的动画图像进行分组。我的图像出现在 Atlas 中是否意味着它们已被预加载?就单个图像而言,在之前声明纹理是否有意义GameScene
像这样:let laserImage = SKTexture(imageNamed: "Sprites/laser.jpg")
然后(例如)在我的 SKSpriteNode 子类之一中我可以通过laserImage
通过?
我最终想知道是否有一个明确定义的方法来解决这个问题,或者我是否应该在之前将每个纹理存储为常量GameScene
。任何有关正确(且最有效)的方法的建议都会很棒。
我尝试实现 appzYourLife 答案,但它增加了加载每个纹理的时间。因此,我最终将所有最常用的 Sprite 放入一个图集中,并将其放入一个单例中。
class Assets {
static let sharedInstance = Assets()
let sprites = SKTextureAtlas(named: "Sprites")
func preloadAssets() {
sprites.preloadWithCompletionHandler {
print("Sprites preloaded")
}
}
}
I call Assets.sharedInstance.preloadAssets()
在菜单场景中。和:
let bg1Texture = Assets.sharedInstance.sprites.textureNamed("background1")
bg1 = SKSpriteNode(texture: bg1Texture)
引用已加载到内存中的纹理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)