Unity中的粒子系统使用起来还是比较方便的。不过在实际过程中遇到这样的一个问题:需要动态的来控制一个粒子系统组件所能产生的最大粒子数。看doc上说是有maxParticles来控制,但实际上却没有这个开放的参数,只能通过其它的方式来实现。
这里可以通过手动产生粒子的方式来实现,也即ParticleSystem中的Emit方法,具体代码如下:
public class ParticleSystemComp : MonoBehaviour
{
ParticleSystem mParticleSystem = null;
int mMaxParticles = 0;
public int maxParticles
{
get
{
return mMaxParticles;
}
set
{
mMaxParticles = value;
}
}
void Awake()
{
mParticleSystem = this.gameObject.GetComponent<ParticleSystem>();
mParticleSystem.emissionRate = 0.0f;
mMaxParticles = mParticleSystem.particleCount;
mParticleSystem.Clear();
}
void Update()
{
if (mParticleSystem != null)
{
if (mParticleSystem.particleCount < mMaxParticles)
{
mParticleSystem.Emit(mMaxParticles - mPar