Optimization cocos2d中的多粒子系统

Optimization cocos2d中的多粒子系统,optimization,cocos2d-iphone,Optimization,Cocos2d Iphone,我想知道我应该走哪条路ParticleSystem。在这个特殊的情况下,我想创建1-20个小爆炸在同一时间,但不同的位置。现在我正在为每次爆炸创建一个新的ParticleSystem,然后将其发布,但这当然会对性能造成很大的影响 我的问题是:有没有一种方法可以创建一个具有多个发射源的ParticleSystem。如果不是,我应该在init中创建一个ParticleSystem的数组,然后在需要爆炸时使用一个自由数组吗?还是有别的方法我没想到?好吧,既然找不到帮助,我就用我认为最好的方法解决了。我

我想知道我应该走哪条路
ParticleSystem
。在这个特殊的情况下,我想创建1-20个小爆炸在同一时间,但不同的位置。现在我正在为每次爆炸创建一个新的
ParticleSystem
,然后将其发布,但这当然会对性能造成很大的影响


我的问题是:有没有一种方法可以创建一个具有多个发射源的
ParticleSystem
。如果不是,我应该在init中创建一个ParticleSystem的数组,然后在需要爆炸时使用一个自由数组吗?还是有别的方法我没想到?

好吧,既然找不到帮助,我就用我认为最好的方法解决了。我制作了一组零件系统

当我需要同时在多个点进行爆炸时,我基本上是这样做的:

ParticleSystem*ps=[EnemyExplosions objectAtIndex:EnemyExplosionPointer++]; ps.position=ExpPoint;
[ps重置系统]

我不知道您是否可以为单个
ParticleSystem
创建多个源,但是您的第二个解决方案(创建
ParticleSystem
数组)是解决此类问题的一个很好的通用解决方案。只要您可以重新初始化ParticleSystem,就可以避免任何其他开销,如实例化成本和内存碎片。

对于每种类型的效果,我都使用单个粒子系统。一个是火焰效果,一个是火花,一个是爆炸,等等

我使用一个类别将[enable]和[disable]方法添加到基本Cocos2D粒子系统,如下所示:

粒子增强

#include "cocos2d.h"

@interface CCParticleSystem (particleEnhancement)
-(void)enable;
-(void)disable;
@end
粒子增强

#import "ParticleEnhancement.h"

@implementation CCParticleSystem (particleEnhancement)

-(void)enable {
  active = YES;
  elapsed = 0.0f;
}

-(void)disable {
  active = NO;
}

@end
然后,当我想触发它时,我只需设置位置并调用enable。粒子系统将根据初始化设置生成一组粒子。系统可以在不同位置多次触发,先前生成的粒子将正常工作

<> P>主要考虑的是,你需要一个更大的粒子预算来考虑单个系统的给定效果的多个实例。

此外,这对“触发”效果也有效,比如爆炸,但对于长时间运行的效果(比如烟迹)可能效果不太好,我还没有真正测试过

我喜欢这样做,因为这意味着我要争论的粒子系统更少,而且我不需要设置一个粒子系统池。粒子系统本身在处理粒子池方面做得很好,无需在系统级别再次复制


这项技术正在我的应用程序中用于所有的粒子效果。

请参考cocos2d库中的ccparticleexamples.m


它将有助于显示不同类型的粒子发射器。

我想这个问题太具体了。我会问Cocos2d的创作者,大家都解决了吗?这样做的最佳方式是什么?