我做了一些研究,我似乎无法找到任何清楚解释如何在动画中预加载单个纹理和纹理的东西.我目前正在使用Assets.xcassets中的Atlas来分组相关的动画图像.在Atlas中显示我的图像是否意味着它们是预装的?就单个图像而言,在GameScene之前声明纹理是否有意义:让laser
Image = SKTexture(imageNamed:“Sprites / laser.jpg”)然后(例如)在我的一个SKSpriteNode子类中我可以通过laserImage通过?
我最终想知道是否有一个定义明确的方法,或者我是否应该在GameScene之前将每个纹理存储为常量.任何关于正确(和最有效)的方法的建议都会很棒.
解决方法
一张单纹理地图集
将所有资产放入一个Sprite Atlas中.如果它们不合适,请至少尝试将单个场景的所有资源放入单个Sprite Atlas中
SKTextureAtlas(named: "YourTextureAtlasName").preloadWithCompletionHandler { // Now everything you put into the texture atlas has been loaded in memory }
自动缓存
您不需要保存对纹理图集的引用,SpriteKit有一个内部缓存系统.让它做它的工作.
我应该使用哪个名称来引用我的图像?
忘记文件图像的名称,将图像分配给资产目录的名称是您需要的唯一名称.
如何从图像创建精灵到纹理图集?
let texture = SKTextureAtlas(named:"croc").textureNamed("croc_walk01") let croc = SKSpriteNode(texture: texture)