unity 2017.3 動態修改粒子特效參數

在各類項目中,我們都會經常的使用粒子特效,雖然大多數時候是美工提供完整的特效,但是個別情況下,我們還是需要根據實際情況去動態的修改特效的某個或多個參數。


第一步,我們需要先獲取到粒子組件。

我們可以公開一個GameObject的字段來獲取這個對象,或者是去Find對象,當然直接掛在它身上也可以。

第二步,我們需要獲取到這個組件,直接GetComponent<ParticleSystem>()就好了。

第三步,這裏比較容易出問題。


兩種不同的寫法有不同的結果,第一次寫的時候遇到了這個問題,然後我就去看了一眼元數據,



這樣就可以看出問題所在了,如果直接去 . 的話,只能找到.shape,而.ShapeModule纔是真正包含.angle的結構體,所以還必須經過一步獲取到ShapeModule。

完整代碼如下:

using UnityEngine;

public class LaserAnimation : MonoBehaviour {
    public GameObject laser;
    private ParticleSystem L;
    ParticleSystem.ShapeModule A;
	// 初始化時執行
	void Start () {
        L = laser.GetComponent<ParticleSystem>();
        A = L.shape;
	}
	
	// 固定時間執行 Edit - Project Setting - time  Fixed timestep=0.02	
	void FixedUpdate () {
        if(A.angle<2)
        A.angle += 1f*Time.deltaTime ;
    }


發佈了55 篇原創文章 · 獲贊 84 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章