Spielobjekt mit Komposition und CCSpriteBatchNode

Ich entwickle gerade ein Spiel mit cocos2d und box2d auf dem iPhone.
Ich habe viele Artikel über die Organisation von Spielcodes, die Struktur von Spielobjekten usw. gelesen. Ich begann meine Spielobjekte zu entwickeln, indem ich von einer Basisklasse erbte, die selbst von CCSprite erbte. Ich hatte einen CCSpriteBatchNode, um alle Spielgegenstände, mit denen der Spieler interagieren kann, in einem Draw-Aufruf zu zeichnen. Dies war einfach, da meine Item-Klasse indirekt von CCSprite erbt, sodass ich meine Items problemlos zum CCSpriteBatchNode hinzufügen konnte. Außerdem konnte ich mich darauf verlassen, dass cocos2d meine Objekte aufbewahrt.

Nachdem ich die Artikel gelesen hatte, wurde mir klar, dass ich meinen Code mit einem kompositionsorientierteren Stil umgestalten musste als mit dem Vererbungsstil. Also habe ich mich für eine GameObject-Basisklasse entschieden, die von NSObject geerbt wurde und Eigenschaften wie ein oder mehrere CCSprites, einen b2Body usw. hat.

Das Problem, vor dem ich jetzt stehe, ist, dass ich mein GameObject nicht mehr direkt zum CCSpriteBatchNode hinzufügen kann. Ich dachte zuerst, ich könnte das Problem leicht beheben, indem ich die Sprite-Eigenschaft des GameObject zum CCSpriteBatchNode hinzufüge. Es ist in Ordnung, aber wer behält das Objekt, das den CCSprite besitzt? Wie kann ich mit CCSprite einfach auf das ursprüngliche Objekt zugreifen (sind userData / Object in Ordnung)?

Soll ich ein Array erstellen, in dem meine Elemente gespeichert werden? Ich möchte wissen, wie Sie einen CCSpriteBatchNode mit einer solchen Spielobjektstruktur verwenden würden?

Es gibt schon eineFaden über das, was unbeantwortet ist und ich würde wirklich gerne über das Thema hören. Keine klare Antwort, aber einige Elemente, die noch weiter gehen.

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage