1

SpriteKit ゲームで奇妙な問題が発生しています。iPad と iOS シミュレーターでは問題なく動作しますが、iPod Touch で実行するとエラーが発生します。エラーの原因を突き止めました。ここで、テクスチャの配列内の項目の 1 つにアクセスしようとしました。

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 でスプライト アトラスを作成する

  1. +Project Navigatorを押して開くcmd1
  2. 選択するAssets.xcassets
  3. メインエリアで、左側の列を右クリックして選択しますNew Sprite Atlas
  4. フォルダーが表示されたらSprites、Finder からこのフォルダーに画像をドラッグするだけで、Sprite Atlas にデータを追加できます。

ここに画像の説明を入力

于 2015-12-13T16:45:35.437 に答える