Comment utiliser le code pour modifier les paramètres du nouveau système de particules Unity

Le dernier système de particules d'Unity utilise du code pour contrôler divers paramètres

          La nouvelle API du système de particules a beaucoup changé et a adopté de nombreuses structures. La plupart des API d'origine sont obsolètes, ou il n'y en a pas avant. Je l'ai trouvée sur Internet et elle est très petite. Le Xiaobai suivant vous montrera comment utiliser le contrôle de code Divers paramètres (en voici seulement une petite partie, si cela vous intéresse, vous pouvez l'essayer vous-même, !! une centaine de volonté !!)

  J'avais l'habitude d'écrire et d'écrire avec désinvolture avant, c'est peut-être compliqué, maintenant je le réorganise, j'utilise unity

   

1.1 code

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: De plus, la nouvelle version de l'exemple de système permet aux particules d'être affectées par le vent WindZone, il suffit de vérifier les forces externes




Je suppose que tu aimes

Origine blog.csdn.net/K20132014/article/details/51973715
conseillé
Classement