我的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,就像其他设备一样。
任何帮助表示赞赏!谢谢!