Böyle bir yapılandırmaya sahip bir CCSpriteBatchNode
var: bütün çocuklar (ChildA1, ChildB1, ChildA2 ...) CCSprite
nesnelerdirCCSpriteBatchNode: Çocuk Çocuğu çizim performans kazanımı alıyor mu?
CCSpriteBatchNode
ChildA1
ChildB1
ChildB2
....
ChildB999
ChildA2
ChildA3
...
.
[CCSprite spriteWithSpriteFrameName:@"FileName.png"];
ChildA1
böyle oluşturulur: CCSpriteBatchNode
ve tüm çocukların ama ChildA1
yoluyla oluşturulur
// 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
Not: Bu sadece iyi işler ve ben bekliyoruz çıkışı childB1
'ın bkz konum childA1
'a göredir ve childA1
taşınıyor, childB1
taşınıyor.
Sorum şu: childB1
- childB999
- childB999
her birinde çizimde bir performans artışı görecek miyim? Anladığım kadarıyla, CCSpriteBatchNode
, CCSpriteBatchNode
numaralı telefondaki tüm çocukların çizimini CCSprites
tüm çocuğunu birlikte çizerek optimize eder. Bu aynı zamanda CCSprites
'un çocuklarına da uygulanıyor mu? bunun yalnızca üst yönlendirerek CCSprites
bir grup işlemek için bana izin verir birçok katmanları bu oyun içinde vardır ve bir CCSpriteBatchNode
içinde CCSprite
iç CCSprites
gruplama: isteyenler için
AFAIK, evet. Eğer cocos2.0 veya üstünü kullanıyorsanız, çizim sayısını kontrol edin, bazı çocukları ekleyin, artmamalıdır. Örneğin, parti düğümü, her doku için tek bir çizim çağrısı yapar ('sprite eklendi' ifadesinin aksine). ARC' olup olmadığını bilmiyorum, fakat eğer siz değilseniz, muhtemelen childA1'i yazılı olarak sızdırıyorsunuz (bu kurucu, otomatik olarak çalıştırılan bir nesneyi geri göndermez). – YvesLeBorg
YvesLeBrog ile aynı fikirdeyim .. Cocos2d için Doku Belleği hakkında konuşuyorsanız, görüntü veya doku başına yüklenmiştir. Bir doku belleğe yüklendikten sonra, ne bellek ne de tekrar yüklenecek zaman alır, bu da oyunun performansında iyileşme sağlar. Sizin değişkenleriniz tarafından tüketilen bellekle ilgili olarak, bunun CCSprite örneklerinin kendi sınıfında otomatik olarak yayınlanması olduğundan bunun ideal bir yol olduğunu düşünmüyorum. Bu yüzden onların hafıza tüketimi hakkında endişelenmemize gerek yok. –