Описание
Интерфейс скрипта для кривой Min-Max.
Кривая мин.-макс. описывает функции, которые принимают значение между минимальным и максимальным пределом и возвращают значение на основе ParticleSystem.MinMaxCurve.mode. В зависимости от режима это может возвращать рандомизированные значения. Для режимов, требующих кривых, возвращаемое значение зависит от одной или двух кривых, разработанных в Инспекторе ParticleSystem, которые могут быть оценены как одно значение между -n и n, где n — константа, также установленная в Инспекторе. Дополнительную информацию см. в разделе ParticleSystemCurveMode.
Смотрите так же: ParticleSystem.
using UnityEngine;
// This example shows setting a constant rate value.
public class ConstantRateExample : MonoBehaviour
{
ParticleSystem myParticleSystem;
ParticleSystem.EmissionModule emissionModule;
void Start()
{
// Get the system and the emission module.
myParticleSystem = GetComponent<ParticleSystem>();
emissionModule = myParticleSystem.emission;
GetValue();
SetValue();
}
void GetValue()
{
print("The constant value is " + emissionModule.rateOverTime.constant);
}
void SetValue()
{
emissionModule.rateOverTime = 10.0f;
}
}
using UnityEngine;
// This example shows using 2 constants to drive the rate.
public class TwoConstantsRateExample : MonoBehaviour
{
ParticleSystem myParticleSystem;
ParticleSystem.EmissionModule emissionModule;
void Start()
{
// Get the system and the emission module.
myParticleSystem = GetComponent<ParticleSystem>();
emissionModule = myParticleSystem.emission;
GetValue();
SetValue();
}
void GetValue()
{
print(string.Format("The constant values are: min {0} max {1}.", emissionModule.rateOverTime.constantMin, emissionModule.rateOverTime.constantMax));
}
void SetValue()
{
emissionModule.rateOverTime = new ParticleSystem.MinMaxCurve(0.0f, 10.0f);
}
}
using UnityEngine;
// This example shows using a curve to drive the rate.
public class CurveRateExample : MonoBehaviour
{
ParticleSystem myParticleSystem;
ParticleSystem.EmissionModule emissionModule;
// We can "scale" the curve with this value. It gets multiplied by the curve.
public float scalar = 1.0f;
AnimationCurve ourCurve;
void Start()
{
// Get the system and the emission module.
myParticleSystem = GetComponent<ParticleSystem>();
emissionModule = myParticleSystem.emission;
// A simple linear curve.
ourCurve = new AnimationCurve();
ourCurve.AddKey(0.0f, 0.0f);
ourCurve.AddKey(1.0f, 1.0f);
// Apply the curve.
emissionModule.rateOverTime = new ParticleSystem.MinMaxCurve(scalar, ourCurve);
// In 5 seconds we will modify the curve.
Invoke("ModifyCurve", 5.0f);
}
void ModifyCurve()
{
// Add a key to the current curve.
ourCurve.AddKey(0.5f, 0.0f);
// Apply the changed curve.
emissionModule.rate = new ParticleSystem.MinMaxCurve(scalar, ourCurve);
}
}
using UnityEngine;
// This example shows using 2 curves to drive the rate.
public class TwoCurveRateExample : MonoBehaviour
{
ParticleSystem myParticleSystem;
ParticleSystem.EmissionModule emissionModule;
AnimationCurve ourCurveMin;
AnimationCurve ourCurveMax;
// We can "scale" the curves with this value. It gets multiplied by the curves.
public float scalar = 1.0f;
void Start()
{
// Get the system and the emission module.
myParticleSystem = GetComponent<ParticleSystem>();
emissionModule = myParticleSystem.emission;
// A horizontal straight line at value 1.
ourCurveMin = new AnimationCurve();
ourCurveMin.AddKey(0.0f, 1.0f);
ourCurveMin.AddKey(1.0f, 1.0f);
// A horizontal straight line at value 0.5.
ourCurveMax = new AnimationCurve();
ourCurveMax.AddKey(0.0f, 0.5f);
ourCurveMax.AddKey(1.0f, 0.5f);
// Apply the curves.
emissionModule.rateOverTime = new ParticleSystem.MinMaxCurve(scalar, ourCurveMin, ourCurveMax);
// In 5 seconds we will modify the curve.
Invoke("ModifyCurve", 5.0f);
}
void ModifyCurve()
{
// Create a "pinch" point.
ourCurveMin.AddKey(0.5f, 0.7f);
ourCurveMax.AddKey(0.5f, 0.6f);
// Apply the changed curve.
emissionModule.rateOverTime = new ParticleSystem.MinMaxCurve(scalar, ourCurveMin, ourCurveMax);
}
}
using UnityEngine;
// This example shows how to retrieve existing keys from a MinMaxCurve
public class ReadCurveExample : MonoBehaviour
{
void Start()
{
// Get the system and the emission module.
var myParticleSystem = GetComponent<ParticleSystem>();
var emissionModule = myParticleSystem.emission;
// Get the curve (assuming the MinMaxCurve is in Curve mode)
AnimationCurve curve = emissionModule.rateOverTime.curve;
// Get the keys
Keyframe[] keys = curve.keys;
}
}
Свойства
constant | Устанавливает постоянное значение. |
constantMax | Устанавливает константу для верхней границы. |
constantMin | Устанавливает константу для нижней границы. |
curve | Устанавливает кривую. |
curveMax | Устанавливает кривую для верхней границы. |
curveMin | Устанавливает кривую для нижней границы. |
curveMultiplier | Устанавливает множитель для применения к кривым. |
mode | Устанавливает режим, который кривая минимум-максимум использует для оценки значений. |
Конструкторы
ParticleSystem.MinMaxCurve | Одно постоянное значение для всей кривой. |
Публичные Методы
Evaluate | Вручную запрашивает кривую, чтобы вычислить значения в зависимости от того, в каком режиме она находится. |