新 Unity 最新粒子系统如何用代码改变参数

Unity 最新的用粒子系统用代码控制各项参数

          新的粒子系统api换了不少,采用了很多的结构,原先很多api已经过时,或者更早就没有,网上找了找发小也是少之又少,下面小白就展示一下如何用代码控制各个参数(这里只是一小部分,有兴趣可以自己试试,!!一会百会!!)

  之前无心随便写写,可能写的比较乱,现在重新整理下,我用的unity5.5

   

1.1代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ParticleTest : MonoBehaviour
{
    public ParticleSystem particleSys;
    ParticleSystem.EmissionModule parEmission;
    ParticleSystem.ShapeModule parShape;
    //----------------------
    ParticleSystem.MinMaxCurve parMinMaxCurve;
    void Start()
    {
        parEmission = particleSys.emission;
        parShape = particleSys.shape;
        //-----------------
        parMinMaxCurve = new ParticleSystem.MinMaxCurve(20);
        parEmission.rateOverTime = parMinMaxCurve;
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.O))
        {
            particleSys.Play();
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            particleSys.Stop();
        }
        if (Input.GetKeyDown(KeyCode.E))
        {
            SetParEmission(50, 1000);
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            ChangeParEmission(10);
        }
        if (Input.GetKeyDown(KeyCode.H))
        {
            SetParShape();
        }
    }
    /// <summary>
    /// 设置emission
    /// </summary>
    private void SetParEmission(float min, float max)
    {
        //单独设置
        //parEmission.rateOverTimeMultiplier = min;
        //or parEmission.rateOverDistanceMultiplier = min;
        //Curve设置
        parEmission.rateOverDistance = new ParticleSystem.MinMaxCurve(min, max);
        //or  parEmission.rateOverTime = new ParticleSystem.MinMaxCurve(min, max);//设置粒子数量,min10 max100;
    }
    private void ChangeParEmission(float addRate)
    {
        parMinMaxCurve.constant += 10;
        parEmission.rateOverTime = parMinMaxCurve;
        //另一种
        //如果设置
        //parMinMaxCurve = new ParticleSystem.MinMaxCurve(10,100);
        //parEmission.rateOverTime = parMinMaxCurve;
        //那么
        //if (parMinMaxCurve.constantMin < parMinMaxCurve.constantMax)
        //{
        //    parMinMaxCurve.constantMin += addRate;
        //    parEmission.rateOverTime = parMinMaxCurve;
        //}
    }
    private void SetParShape()
    {
        parShape.shapeType = ParticleSystemShapeType.Box;//设置为box形状
        parShape.box = new Vector3(2, 2, 2); //设置长宽高
    }
}



2:另外新版的例子系统可以让粒子受到WindZone风的影响 ,只需要将External forces打勾勾




猜你喜欢

转载自blog.csdn.net/K20132014/article/details/51973715
今日推荐