我正在做一個粒子系統爲我的比賽,這基本上是煙火箭走出來在我的遊戲。所有的粒子都在稱爲煙霧的ccArray中。的cocos2d ccArray刪除對象是緩慢
ccArray *smoke = ccArrayNew(0);
我有一個叫煙類,這是CCSprite的一個子類,其中添加叫做__opacity伊娃的。
當我添加一個新的煙霧對ccArray我這樣做:
ccArrayAppendObject(smoke, [Smoke spriteWithFile: @"smoke.png"]);
[smoke->arr[smoke->num - 1] setupWithTouch: touch andOpacity: 255.0f];
[self addChild: smoke->arr[smoke->num - 1]];
這並不落後於一切,速度快,
這就是我如何處理每一個煙幀:
if(smoke->num > 0)
{
for(NSUInteger i = 0; i < smoke->num; i++)
{
Smoke *s = smoke->arr[i];
s.__opacity = s.__opacity - 255.0f * delta;
[s setOpacity: s.__opacity];
if(s.__opacity <= 0.0f)
{
[self removeChild: s cleanup: YES];
ccArrayFastRemoveObjectAtIndex(smoke, i);
}
}
}
當不透明度小於0,除去來自場景的煙霧,然後
將它從陣列中移除 - 這是減緩遊戲速度的部分,將其從陣列中移除。當場景中有60個煙霧顆粒時,它從60 FPS變爲15-20 FPS。
任何想法我怎麼能加快這?
此外,理由我用ccArray而不是NSMutableArray的是因爲我讀ccArray更快。
還看到:http://www.learn-cocos2d.com/2010/09 /陣列的性能比較,CARRAY-ccarray-的NSArray,NSMutableArray裏/ – LearnCocos2D 2011-10-14 21:43:15