unity 2017.3 動態修改粒子特效引數
阿新 • • 發佈:2019-01-02
在各類專案中,我們都會經常的使用粒子特效,雖然大多數時候是美工提供完整的特效,但是個別情況下,我們還是需要根據實際情況去動態的修改特效的某個或多個引數。
第一步,我們需要先獲取到粒子元件。
我們可以公開一個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 ;
}