0

リソース ディレクトリ内のファイルがメイン バンドル内にあると認識されないという問題が発生しています。

texturePacker を使用して pvr ファイル形式を使用してテクスチャ アトラスを作成しています。texturePacker の出力は、xxx_iPhone-hd.pvr.ccz と xxx_iPhone-hd.plist の 2 つのファイルを生成します。これら 2 つのファイルは、cocos2d プロジェクトの Resource ディレクトリに保存されています。ファイルがリソース フォルダーに保存されたら、リソース フォルダーに移動し、右クリックして ["myProject" にファイルを追加] を選択します (アイテムをコピー先ボックスにチェックを入れません)。

私の cocos2d プロジェクトが実行され、このファイルをロードしようとすると、絶対パスがメイン バンドルに認識されません。具体的には、私のコードは次のコード行を実行します。

backgroundBgNode = [CCSpriteBatchNode batchNodeWithFile:@"StoreMenuBackground_iPhone.pvr.ccz"];

cocos2d コードは、デバイスに Retina ディスプレイがあることを認識し、ファイル名を変更して "StoreMenuBackground_iPhone-hd.pvr.ccz" の relPath を作成します。次に、次の実行を試みます。

NSString *imageDirectory = [relPath stringByDeletingLastPathComponent]; 
fullpath = [[NSBundle mainBundle] pathForResource:file 
                                           ofType:nil 
                                      inDirectory:imageDirectory];

これにより、フル パスが nil になります。以前、上記の手順で別の xxx_iPhone5-hd.pvr.ccz ファイルを作成しましたが、上記のコードはフルパスを正常に返します。スペルを注意深くチェックして再チェックしましたが、問題はありません。プロジェクトの「ビルドフェーズ」の「バンドルリソースのコピー」の下にあるファイルを削除して再度追加しようとしました。mainBundle にこのファイルを強制的に検索させるためにできることはありますか?

4

2 に答える 2

1

ファイルが実際にバンドルに含まれていることを確認する必要があります。

これを行うには、ビルドされたバンドル (プロジェクトの DerivedData フォルダー内) を右クリックし、[パッケージの内容を表示] を選択します。ビルドされた製品を見つける方法がわからない場合は、デバイスを対象とするアーカイブ ビルドを実行します (シミュレーターではアーカイブ ビルドを使用できません)。開いたオーガナイザー ウィンドウでアプリを右クリックし、[Show in Finder] を選択すると、xcarchive が表示されます。xcarchive で「パッケージ コンテンツの表示」を実行し、/Products/Applications に移動して、バンドルで別の「パッケージ コンテンツの表示」を実行します。

ファイルが存在するが、(バンドルのルートではなく) サブフォルダーにある場合は、Xcode 内にフォルダー参照が作成されており、青いフォルダー アイコンで示されます。それを削除して再度追加します。今回は、[ファイルの追加] ダイアログで [... のフォルダー参照を作成] チェックボックスをオフにします。

ファイルがそこにある場合は、そのファイル名をコピーしてコードに貼り付けます。大文字と小文字の違いは、再確認したとしても、とらえどころがなく、気づきにくい場合があります。

于 2013-10-24T22:32:17.763 に答える