Я пишу игру на основе плиток, и моя частота кадров упала с 60 до 30 после того, как я загрузил текстуры плиток и строительные текстуры на экран. После нескольких дней поиска и поиска различных решений я все еще не могу выяснить причину.
Чтобы изолировать и понять проблему. Я создал простой проект, который отображает 100 спрайтов в произвольном положении при загрузке программы и после этого ничего не делает в слое HellowWorld:
// on "init" you need to initialize your instance
-(id) init
{
if( (self=[super init])) {
CCTexture2D *vlo_Texture = [[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"Icon-72.png"]];
CCSprite *vlo_Temp[100];
NSInteger vli_X, vli_Y;
for (NSInteger vli_Counter=0; vli_Counter<100; vli_Counter++)
{
vli_X = arc4random()%480;
vli_Y = arc4random()%320;
vlo_Temp[vli_Counter] = [CCSprite spriteWithTexture:vlo_Texture]; //[CCSprite spriteWithFile:@"Icon-72.png"];
vlo_Temp[vli_Counter].position = ccp(vli_X, vli_Y);
[self addChild:vlo_Temp[vli_Counter]];
}
}
return self;
}
Тот факт, что код выше работает только со скоростью 30 кадров в секунду, шокирует меня. У меня нет таймера для обновления этих спрайтов. Я считаю, что система должна просто рисовать все спрайты и ничего не делать (я полагаю?)
Я пытался подать заявку:
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
и
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:kCCDirectorTypeMainLoop];
однако они вообще не улучшают производительность. Есть ли что-нибудь еще, что я могу сделать?
Заранее спасибо.
Alex