私はこのような構成でCCSpriteBatchNode
を持っている:すべての子供(ChildA1、ChildB1、ChildA2が...)CCSprite
オブジェクトであるCCSpriteBatchNode:子の子が描画パフォーマンスを受け取るかどうか
CCSpriteBatchNode
ChildA1
ChildB1
ChildB2
....
ChildB999
ChildA2
ChildA3
...
。
[CCSprite spriteWithSpriteFrameName:@"FileName.png"];
ChildA1
は次のように作成されます:CCSpriteBatchNode
と、すべての子どもたちが、ChildA1
を介して作成され
// Create Parent Sprite
CCSprite* childA1 = [[CCSprite alloc] init];
childA1.contentSize = CGSizeMake(37.5,37.5);
childA1.anchorPoint = ccp(0,0);
[batchNode addChild:childA1 z:0 tag:1];
// Add Child Sprites
[childA1 addChild:childB1 z:0 tag:1];
[childA1 addChild:childB2 z:0 tag:1];
[childA1 addChild:childB3 z:0 tag:1];
// Continue adding childB4-childB999
注:これはうまくレンダリング、と私は期待して出力、childB1
年代を見ます位置はchildA1
に相対的であり、移動するとchildA1
はchildB1
に移動します。
私の質問は次のとおりです。図面のパフォーマンスがそれぞれchildB1
-となりますか?私が理解しているところでは、CCSpriteBatchNode
は、CCSpriteBatchNode
内のすべての子の描画を、その子をすべて描画することによって最適化します。CCSprites
これはそれらの子供たちにも当てはまりますかCCSprites
?私はこれをやっている理由を知りたい人のために
: 多くの層が、このゲームの中にありますし、CCSpriteBatchNode
内CCSprite
の内側CCSprites
をグループ化するには、私はその親だけを操作することにより、CCSprites
のグループを操作することができますスプライトのグループ
AFAIK、はい。 cocos2.0以降を使用している場合は描画数を確認し、子を追加してください。増やすべきではありません。つまり、バッチノードは追加されたテクスチャごとに1回の描画呼び出しを消費します。あなたがARCしているかどうかは分かりませんが、もしそうでなければ、おそらくchildA1が書かれていて漏れているでしょう(そのコンストラクタは自動解放されたオブジェクトを返しません)。 – YvesLeBorg
私はYvesLeBrogに同意します..あなたがTexture Memory for Cocos2dについて話しているのであれば、イメージまたはテクスチャごとに読み込まれています。テクスチャがメモリにロードされると、メモリや時間がかかって再びロードされないため、ゲームのパフォーマンスが向上します。あなたの変数で消費されるメモリに関しては、CCSpriteのインスタンスがクラスそのもので自動解放されるので、これは理想的な方法ではないと私は考えています。だから私たちは彼らのメモリ消費について心配する必要はありません。 –