私はcocos2dフォーラムを検索してきましたが、人々が使用している概念のいくつかを理解していません。私のゲームでは、メインメニューのアニメーションとして使用するために100を超える画像をロードする必要がありますが、これらの画像のロードに約3〜5秒かかり、その後ゲームが起動するという問題があります。画像が読み込まれた後、アニメーションはうまく動作しますが、問題となるのは読み込みです。スプライトシートを使用しますが、画像が大きすぎるため、個別にロードする必要があります。では、最初にこれらすべての画像をロードするロード画面を作成する必要があります。そうであれば、これを実装するための最良の方法はどのようになりますか?このようなことをしようとするのはこれが初めてです。
2 に答える
@スティーブン:これを行うには2つの方法があります。TexturePackerを使用すると、ソースイメージごとに1つずつ.tpsファイルを作成し、[ファイル]->[イメージのエクスポート]で作成できます。画像のジオメトリを1024x1024に設定します。.pvr形式を指定し、事前に乗算されたアルファを有効にし、ディザリングを使用します(これにより、実際には一部のテクスチャにメリットがあります。つまり、.pngを改善できます)。また、メニューにRGBA4444を使用することもできます(必要なメモリを増やすことができ、レンダリング品質を大幅に低下させることはありません)。
組み込みのtexturetoolを次のように使用することもできます。
これを行う前に、toto.pngをPOTファイル(1024x1024)に変換する必要があります。たとえば、フォトショップを使用します。
MrEvil:pvrCenter $ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/texturetool -m -f PVR -e PVRTC toto.png -o toto.pvr
MrEvil:pvrCenter $ gzip toto.pvr
これにより、gzipの後に優れた圧縮が得られます(691Kb pngから295Kb)。
私はtexturetoolを使用しました。これは、シェルでスクリプトを作成し、1つのコマンドで大量の画像を処理できるためです(ボックスが画像を解き放つ間にD3を再生します:))。
編集1:パッキングとファイルサイズに関するいくつかの情報。
わかりました、私は自分の960x640 8ビットPNG、691Kbの1つから始めました。
TexturePackerをロードし、フォーマットをRBGA8888、1024x1024に設定すると、766 Kbが得られます(これにより、POTファイルが作成されます)。
.pvr.ccz、996KbとしてRGBA8888にエクスポートします。RGBA8888に.pvr.gz、1.001 Mbとしてエクスポートします。RGBA4444に.pvr.ccz、193Kbとしてエクスポートします。
766 Kbファイルでtexturetoolを使用する場合は、ファイル305Kb(RGBA8888)をgzipで圧縮します。305Kbと996Kbの違いを本当に説明することはできません。これは、TexturePackerによるディザリング処理に関連している可能性がありますが、確かではありません。
はい、間違いなくテクスチャアトラスを使用してください(スプライトシートは正しい用語ではありませんが、同じことを意味します)。そのための優れたツールはTexturePackerです。
テクスチャアトラスは、ロード時の時間を節約し、メモリを節約します。さまざまな画像の色深度と圧縮オプションを試して、メモリ使用量と読み込み時間をさらに改善することもできますが、多くのオプションは、画像の品質にさまざまな程度で影響します。
ところで、これらの画像の大きさはどれくらいですか?それぞれが512x512であり、それらを100個ロードするとすると、100MBのメモリを消費します。これは見過ごされがちであり、ディスク上のファイルサイズは、画像がテクスチャとして消費するサイズのほんの一部であるためです。