我正在做一个粒子系统为我的比赛,这基本上是烟火箭走出来在我的游戏。所有的粒子都在称为烟雾的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