0

環境(box2d)内に4つの異なるタイプのオブジェクトがあり、各タイプのオブジェクトには複数のインスタンスがあり、すべてのCCSpriteの追加と操作を処理する最も効率的な方法を見つけたいと考えています。スプライトはすべて異なるファイルからのものであるため、各スプライトを作成してデータ構造(NSMutableArray)に追加するのが最善でしょうか、それとも各CCSpriteファイルが(オブジェクトのタイプごとに)異なっていてもCCSpriteBatchNodeを使用するのでしょうか?ありがとう。

@interface LevelScene : CCLayer
{
    b2World* world;
    GLESDebugDraw *m_debugDraw;

    CCSpriteBatchNode *ballBatch;
    CCSpriteBatchNode *blockBatch;
    CCSpriteBatchNode *springBatch;
    CCSprite *goal;
}

+(id) scene;

// adds a new sprite at a given coordinate
-(void) addNewBallWithCoords:(CGPoint)p;

// loads the objects (blocks, springs, and the goal), returns the Level Object
-(Level) loadLevel:(int)level;

@end
4

1 に答える 1

1

異なるテクスチャを使用している場合、CCSpriteBatchNode はおそらく答えではありません。ここのCocos2Dドキュメントから:

CCSpriteBatchNode はバッチ ノードに似ています。子が含まれている場合、1 回の OpenGL 呼び出し (「バッチ描画」とも呼ばれます) でそれらを描画します。CCSpriteBatchNode は、1 つのテクスチャ (1 つの画像ファイル、1 つのテクスチャ アトラス) のみを参照できます。

それで終わりです。表向きは、これらの CCSprite オブジェクトを CCLayer (または他の CCNode オブジェクト) に追加することになりますよね?

子オブジェクトを管理するために別の配列を作成する必要はありません。Cocos2D はchildren任意のノードのプロパティを提供します。あなたの場合[myLayer addChild:newSprite]、あなたはそれへの参照を持っているでしょうchildren

それは役に立ちますか?ユースケースについてもう少しアイデアを提供していただければ、回答を拡大できます。

于 2011-02-08T01:17:01.607 に答える