1

私の cocos2d iPhone ゲームには、アニメーション化されたスプライトがいくつかあります。アニメーション化されたスプライトとは、CCRepeatForever アクションが実行される CCSprite を意味します。繰り返しアクションは、png スプライトシートと関連する plist 座標ファイルから来るアニメーションのフレームを循環します。

私はいくつかのユニークなアニメーションしか持っていませんが、同じアニメーションでアニメーション化されたスプライトをたくさん持っています。たとえば、30 人のアニメーション化されたサッカー選手が画面の周りを走り回り、すべて CCRepeatForever アクションを実行しているとします。この場合、アニメーションをプリロードして再利用する効率的な方法は何ですか?

私の現在のアプローチは、ゲームの起動時に繰り返しアクションを作成することです。次に、アニメーション化された新しいスプライトを作成する場合は、事前にロードされた繰り返しアクションのコピーをスプライトで実行します。開始時にアニメーションが途切れることがあるため、これが非常に効率的かどうか疑問に思います。すべてのフィードバックは大歓迎です! 私はほとんどすべてのアーキテクチャ/セットアップに対してオープンです。

編集 - 詳細: アクションを「事前コピー」することができるかどうか疑問に思っていますか? ゲームが読み込まれると、繰り返しアクションのコピーでキューがいっぱいになります。次に、必要に応じてそれらを外します。キューのサイズがしきい値を下回ると、バックグラウンド スレッドで補充します。

4

2 に答える 2

2

テクスチャ アトラスを使用していることを確認し、アニメーションを含むすべてのテクスチャをプリロードします。理想的には、.pvr.ccz 形式を使用することをお勧めします。これは、PNG よりもはるかに高速に読み込まれるためです。

他のすべての操作は、おそらくフレームレートにほとんどまたはまったく影響を与えません。スタッタリングは、オンデマンドでテクスチャをロードすることによって発生する可能性が高く、オーディオ バッファに関しても同様です (プリロードせずにオーディオを再生するなど)。

CCAnimate を使用した CCRepeatForever の (頻繁な) 作成の最適化について心配する必要はありませ。私は、吃音の問題がアクションの作成と実行に関連していないことを 99.9% 確信しています。

リソースのロードは、ゲームプレイ中に実行できる最も時間のかかるタスクであるため、すべてのリソース ファイルをプリロードすることが重要です。あなたの場合、テクスチャがメモリ内にあることを確認するだけで十分です。

于 2012-12-16T19:04:46.083 に答える
1

フレームごとのアニメーションには、CCAnimation と CCAnimationCache を使用します。

于 2012-12-16T19:02:08.980 に答える