Ich habe eine CCSpriteBatchNode
mit einer Konfiguration wie folgt aus:CCSpriteBatchNode: Erhält das Kind des Kindes Zeichenleistungsgewinne?
CCSpriteBatchNode
ChildA1
ChildB1
ChildB2
....
ChildB999
ChildA2
ChildA3
...
Wo alle Kinder (ChildA1, ChildB1, ChildA2 ...) sind CCSprite
Objekte. Die CCSpriteBatchNode
und alle Kinder aber ChildA1
über erstellt:
[CCSprite spriteWithSpriteFrameName:@"FileName.png"];
ChildA1
wird wie folgt erstellt:
// 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
Hinweis: Dies macht ganz gut, und ich sehe den Ausgang erwarte ich, wo childB1
‚s Position ist relativ zu childA1
und bewegt sich childA1
Ergebnisse in childB1
verschieben.
Meine Frage ist dies: Werde ich einen Leistungszuwachs in der Zeichnung von childB1
- childB999
sehen? Von dem, was ich verstehe, optimiert die CCSpriteBatchNode
die Zeichnung aller Kinder innerhalb einer CCSpriteBatchNode
durch Zeichnen aller seiner Kinder CCSprites
zusammen. Gilt das auch für die Kinder dieser CCSprites
?
Für diejenigen, die wissen wollen, warum ich das tue: Es gibt viele Ebenen in diesem Spiel und Gruppierungs CCSprites
innerhalb eines CCSprite
innerhalb eines CCSpriteBatchNode
ermöglicht es mir, eine Gruppe von CCSprites
durch die Manipulation nur die Eltern davon zu manipulieren Gruppe von Sprites.
AFAIK, ja. Wenn Sie cocos2.0 oder höher verwenden, überprüfen Sie die Anzahl der Zeichnungsfiguren, fügen Sie einige untergeordnete hinzu, es sollte nicht erhöht werden: dh der Stapelknoten verbraucht einen einzelnen Zeichnungsaufruf pro hinzugefügter Textur (im Gegensatz zu "pro hinzugefügtem Sprite"). Ich weiß nicht, ob Sie ARC'ing sind, aber wenn Sie nicht sind, leugnen Sie wahrscheinlich childA1 wie geschrieben (dieser Konstruktor gibt kein automatisches Objekt zurück). – YvesLeBorg
Ich stimme YvesLeBrog zu. Wenn Sie über Textur-Speicher für Cocos2d sprechen, wird es pro Bild oder Textur geladen. Sobald eine Textur in den Speicher geladen wurde, braucht weder Speicher noch Zeit, um sie erneut zu laden, was zu einer Leistungsverbesserung für das Spiel führt. In Bezug auf Speicher, der von Ihren Variablen verbraucht wird, halte ich dies nicht für den idealen Weg, da CCSprite-Instanzen in ihrer Klasse selbst eine Autorelease darstellen. Daher müssen wir uns nicht um ihren Speicherverbrauch kümmern. –