4

CCBatchNode を使用すると、Cocos2d でのパフォーマンスが大幅に向上すると聞きました。それがどのように機能するかを理解するのに苦労しています。ゲーム内のオブジェクトを表す CCSprite のサブクラスがいくつかあります。spriteWithFile:これまでのところ、メソッドでそれらを初期化しています。

これで、すべてのスプライトを含むスプライト シートが作成されました (その plist ファイルと共に)。「単一のopenGLドローコール」を利用できるようにするには、どのように使用すればよいですか?

CCBatchNode 内でフレームを取得してスプライトを初期化すると、機能しますか?

とにかく、私はCCBatchNodeを理解するのに苦労しています.いくつかの助けが素晴らしいでしょう!

よろしく

4

1 に答える 1

3

CCSpriteFrameCache と CCSpriteBatchNode を使用した簡単な例を次に示します。

最初に共有フレーム キャッシュをセットアップします (これは、個々のイメージの名前と、結合されたバッチ ノード イメージ内のそれらの長方形フレームとの間のマッピングと考えてください)。

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spritesheet.plist" textureFile:@"spritesheet.png"];

次に、結合された画像名でバッチ ノードを作成します (この batchNode は、複数のスプライトに対して単一の描画を行います)。

CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"spritesheet.png" capacity:20];

次に、個々の画像の名前を渡すスプライト ノードを作成します。これをバッチ ノードに追加します。(ここでもバッチノードが描画呼び出しを実行するため、ここでパフォーマンスが向上します):

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"name_of_your_sprite_in_plist"];
[batchNode addChild:sprite];

以前に単一の画像から直接作成したスプライトと同じように、スプライトを扱うことができます (ただし、バッチ ノードを使用することによるパフォーマンス上の利点があります)。

于 2012-11-20T18:27:56.793 に答える