2011-08-02 6 views
2

私は、Cocos2dを使ってコンテンツのマップを作成するアプリケーションを構築しています(技術的には、グラフ理論の意味では大きなツリー)。各ノードは、自身のテクスチャを持つスプライトで表され、リーフノードのすべてには2番目の「ボタン押下」テクスチャがあります。さらに、いくつかのノードはPNGアニメーションです。私は130のノードテクスチャとアニメーションのための3つの他のスプライトシートを含む1つのスプライトシートを持っています。これらの4つのファイルはすべて、約18.4 MBになります。(スプライトシートを使用して)Cocos2dでテクスチャを読み込むと、メモリ使用量はどのように増加しますか?

私はアプリを実行し、cocos2dの部分を実行しないでください(つまり、フレームワークを起動しないでください。したがって、テクスチャをロードしないでください)。アプリケーションは約10 MBで動作します。 Cocos2dとそれらのスプライトシートを読み込むと、メモリは過去90 MBを上回ります。 1.

はcocos2dのために、この正常です

すべての私の研究は、私が最も効率的な方法も可能で物事をやっていると言っているようだが、すでに非常に高いメモリ使用量と私はiPadでメモリ関連のクラッシュの多くを得ます?画像そのものはそれほど大きくないので、スプライトの数のために非常に多くのメモリを使用していますか?メモリフットプリントを下げる方法はありますか?私は犠牲になっています。

答えて

3

スプライトを大きなスプライトシートにまとめることで得られる効率は、レンダリング時に測定され、メモリに保存されるのではなく測定されます。 UIImageやCocos2dのようなOpenGLフレームワークに関係なく、画像を読み込むときのメモリ量は、幅x高さxピクセル/ピクセルです。したがって、2048x2048のPNG画像は2048x2048x4バイトのメモリを占有します(12 MB)。

この場合、メモリを節約するために、必要に応じてロードするだけで、不要になったらすぐにアンロードする必要があります。ここで、トリックはどこにロードするのかを知ることで、ユーザは吃音を見ることはありません。楽しい!

関連する問題