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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章