码迷,mamicode.com
首页 > 其他好文 > 详细

Unity中控制粒子系统的最大粒子数量

时间:2014-08-21 19:23:14      阅读:741      评论:0      收藏:0      [点我收藏+]

标签:style   blog   使用   os   io   ar   2014   art   

Unity中的粒子系统使用起来还是比较方便的。不过在实际过程中遇到这样的一个问题:需要动态的来控制一个粒子系统组件所能产生的最大粒子数。看doc上说是有maxParticles来控制,但实际上却没有这个开放的参数,只能通过其它的方式来实现。

这里可以通过手动产生粒子的方式来实现,也即ParticleSystem中的Emit方法,具体代码如下:

public class ParticleSystemComp : MonoBehaviour
{
	ParticleSystem mParticleSystem = null;
	int mMaxParticles = 0;

	public ing 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 - mParticleSystem.particleCount);
			}
		}
	}
}

实现过程是对于每个ParticleSystem添加一个额外的组件,通过该组件来原始PS的更新。其中的更新原则是判断当前活动的粒子数量,如果粒子数小于指定的最大值的话就再重新生成几个新的粒子出来进行填充。

此外,出于性能考虑,其中Update内部的操作也可以移至FixedUpdate中进行以减少更新次数,但是视觉上并不会带来太大的差异。

Unity中控制粒子系统的最大粒子数量,布布扣,bubuko.com

Unity中控制粒子系统的最大粒子数量

标签:style   blog   使用   os   io   ar   2014   art   

原文地址:http://blog.csdn.net/bugrunner/article/details/38734803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!