1

我的 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 之外的任何其他设备上运行时,我的图集中的纹理会加载到数组 Frames 中。但是,在 iPod Touch 上,没有纹理加载到数组中。这是纹理图集的图像:链接到纹理数组的图像

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

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

4

1 回答 1

1

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

在 Xcode 7 中创建 Sprite Atlas

  1. 打开Project Navigator按下cmd+1
  2. 选择Assets.xcassets
  3. 在主区域中,右键单击左列并选择New Sprite Atlas
  4. 现在Sprites出现了一个文件夹,只需将图像从 Finder 拖到该文件夹​​即可填充您的 Sprite Atlas。

在此处输入图像描述

于 2015-12-13T16:45:35.437 回答