SKTextures无法加载到iPod Touch上的阵列中

时间:2015-12-12 18:16:33

标签: arrays swift sprite-kit textures texture-atlas

我的SpriteKit游戏有一个非常奇怪的问题。它在我的iPad和iOS模拟器上运行得非常好,但是当我在iPod Touch上运行时,出现错误。我找到了错误的来源,它就在这里,我尝试访问纹理数组中的一个项目:

let firstFrame = Frames[0]

错误基本上是说Frames [0]不存在,事实上,在iPod Touch上,当我打印数组中的项目数时,什么也没有。在其他设备上,数组具有应该具有的所有纹理。

以下是我将纹理图集中的一些纹理加载到动画数组中的位置和方式:

let birdAtlas = SKTextureAtlas(named: "bird")   
    var Frames = [SKTexture]() ////Here is the array into which I am loading textures

    let numImages = birdAtlas.textureNames.count  ////Should be 12, as is on devices other than iPod
    print(numImages) ////On iPod Touch, numImages = 0

    for var i=1; i<=numImages/3; i++ {

        let birdTextureName = "\(currentBird)\(i)"
        print(birdTextureName)
        Frames.append(birdAtlas.textureNamed(birdTextureName))

    } //^^This loop adds the textures 1 - 4 to the array

    for var i=numImages/3; i>=1; i-- {

        let birdTextureName = "\(currentBird)\(i)"
        print(birdTextureName)
        Frames.append(birdAtlas.textureNamed(birdTextureName))

    } //^^This loop adds the textures 3 - 1 to the array

当在iPod Touch之外的任何其他设备上运行时,我的地图集中的纹理会加载到阵列帧中。但是,在iPod Touch上,没有纹理加载到阵列中。这是纹理图集的图像:link to image of texture array

同样,纹理完美地加载到阵列中,并在iPad和iPhone模拟器以及真正的iPad设备上完美动画。它只是不能在iPod Touch上工作,错误导致应用程序无法加载。 iPod touch正在运行iOS 9,就像其他设备一样。

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:1)

由于我之前的评论确实解决了问题,我将其作为答案发布,并附上更详细的解释。

在Xcode 7中创建Sprite Atlas

  1. 打开Project Navigator cmd + 1
  2. 选择Assets.xcassets
  3. 在主区域右键单击左栏,然后选择New Sprite Atlas
  4. 现在出现了Sprites文件夹,只需将图片从Finder拖到此文件夹即可填充您的Sprite Atlas。
  5. enter image description here