MinMaxCurve
структура в UnityEngine
Выполнено в:UnityEngine.ParticleSystemModule
Описание
Интерфейс скриптов для Min-Max Curve.
Кривая Мин-Макс. описывает функции, которые принимают значение между минимальным и максимальным пределом и возвращают значение на основе ParticleSystem.MinMaxCurve.mode. В зависимости от режима, это может возвращать случайные значения. Для режимов, требующих кривых, возвращаемое значение зависит от одной или двух кривых, созданных в ParticleSystem Inspector, которые могут быть оценены по единому значению между -n и n, где n — константа, также установленная в InspectorСм. 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 | Вручную запрашивать кривую для вычисления значений в зависимости от режима. |