我有一個CCSpriteBatchNode
有這樣的配置:CCSpriteBatchNode:孩子的孩子是否收到繪畫表現收益?
CCSpriteBatchNode
ChildA1
ChildB1
ChildB2
....
ChildB999
ChildA2
ChildA3
...
所有兒童(ChildA1,ChildB1,ChildA2 ...)是CCSprite
對象。
[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
- childB999
?據我所知,CCSpriteBatchNode
通過將其所有子女CCSprites
繪製在一起,優化了CCSpriteBatchNode
內所有兒童的繪圖。這是否也適用於那些CCSprites
的孩子?
對於那些誰想知道爲什麼我這樣做: 有此遊戲中的許多層和CCSpriteBatchNode
內分組CCSprites
一個CCSprite
內讓我通過操縱僅是母公司操縱一組CCSprites
小組小組。
AFAIK,是的。如果您使用的是cocos2.0或更高版本,請檢查繪圖數量,添加一些孩子,但不應該增加:即,批處理節點會添加每個紋理添加的單個繪圖調用(與「添加每個精靈」相反)。不知道你是否是ARC'ing,但是如果你不是你,你可能會像寫入的那樣泄漏childA1(構造函數不返回自動釋放對象)。 – YvesLeBorg
我同意YvesLeBrog ..如果你談論Cocos2d的紋理內存,它加載的每個圖像或紋理。一旦將紋理加載到內存中,既不需要內存也不需要時間來重新加載它,這導致遊戲性能的提高。關於你變量消耗的內存,我不認爲這是理想的方式,因爲CCSprite實例在它自己的類中自動釋放。所以我們不必擔心他們的內存消耗。 –