0

700近くのpng画像を含むCocos2dシーンを読み込んでいます。このシーンをXcodeから直接実行しても、コンソールにいくつかの画像名の長いリストとともにメモリ警告メッセージが表示されます。

私はそれらをdeallocで適切に割り当て解除していますが、今回このシーンに再び来ると、画像の半分をロードしているときにゲームがクラッシュします

これは、一度に大量のテクスチャをロードする問題ですか、それとも問題のあるコードですか?

このクラッシュを回避するために、非常に多くの画像の読み込みを処理し、適切なメモリ管理を行うにはどうすればよいですか?

4

1 に答える 1

2

700のpng画像?うーん。わかりました、私はそれらのゲームが好きです。

各画像が 128x128 ピクセル「のみ」であると仮定しましょう。各テクスチャは 64 KB (128 x 128 x 4 バイト) を消費します。このような 700 のテクスチャに合計 45 MB のメモリが使用されます。

テクスチャがその 2 倍またはそれ以上の場合、KA-BOOM!

ファイル サイズはテクスチャ メモリとは関係がないことに注意してください。ファイルは、ファイル システム内で合計数メガバイトになる場合があります。しかし、それはそれらが圧縮されているためです。ただし、PNG ファイルから作成されたテクスチャは圧縮されません。

できること:

  • テクスチャアトラスを使用する
  • テクスチャの色深度を 16 ビットに減らします
  • 圧縮された PVR 形式を使用する

TexturePacker は、これらのタスクを支援します。

于 2012-09-14T17:48:24.530 に答える