Unity中控制粒子系統的最大粒子數量,unity粒子
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中進行以減少更新次數,但是視覺上並不會帶來太大的差異。
現在Unity3D 35的粒子系統預設是一直在不停的發射,怎實現只發射一次,跪
在Emission裡面把Rate改為0,然後Bursts點一下加號
Time設定為0
Particles就填你設定的最大粒子數
這樣就會一次性把你設定的粒子數發射出去
unity3d粒子系統可以做出任何類型的粒子
任何這個詞太絕對了。沒有哪款引擎能說它可以做出任何效果。U3D作出絕大多數效果還是可以的