大きな世界を持つcocos2dゲームをデザインしようとしています。世界のタイル マップは非常に大きく、おそらく 20 の iPad 画面サイズです。CCTMXTiledMap を画面にロードする方法を知りたいですか? 画面に直接追加すると、メモリを使いすぎませんか? もしそうなら、この問題を解決する解決策はありますか?
2 に答える
タイルマップのメモリ使用量は、タイルのサイズと、スプライトに変換する必要があるタイルの数 (たとえば、アニメーション化を実行する場合) によって異なります。
タイルのサイズが 32x32 ピクセルであると仮定します。iPad の寸法の 20 倍は、20.480x15.360 ポイントを意味します。32 で割ると、640x480 タイルのマップのタイル サイズ、または合計 307.200 タイルが得られます。各タイルが 64 バイトのメモリを使用すると仮定すると (古い cocos2d バージョンでは 64 バイト未満でした)、マップは最終的にほぼ 19 MB のメモリを使用することになります。それはテクスチャを数えていません。
これで、CCSprite インターフェースを介して対処するすべてのタイルについて、たとえば、スプライト プロパティの 1 つを変更したり、スプライトでアクションを実行したりして、cocos2d はそのタイルを通常の CCSprite に変換します。前回確認したとき、各 CCSprite オブジェクトは約 420 バイトを使用していました。したがって、各タイルの色プロパティを変更してすべてのタイルを CCSprite オブジェクトに変換する場合、タイルマップは 123 MB のメモリを消費します。繰り返しますが、テクスチャは含まれていません。
KoboldTouch で Tilemap レンダラーを試すことができます。非常に大きなタイルマップ (何百万ものタイル、つまり 4000x4000 タイル) を処理でき、60 fps でレンダリングできます。
すべてのタイルを一度にロードしようとすると、間違いなくメモリを大量に消費します。
CCTMXTilesMapに関するこのチュートリアルをご覧ください。