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