ParticleSystem.Play
Declaration
public void Play();public void Play(bool withChildren = true);Параметры
| Параметр | Описание |
|---|---|
| withChildren | Играть все дочерние частицы системы, а также. |
Описание
Запускает Particle System и перенастраивает время воспроизведения на 0.
Функция Play() переводит Particle System в режим воспроизведения и включает испускание частиц (если оно было отключено). Точное поведение зависит от текущего состояния системы:
Если Particle System был приостановлено, то это возобновляет воспроизведение с предыдущего времени.
Если Particle System имеет остановлено, то система запускается с момента времени 0 и, если это уместно, ParticleSystem.MainModule.startDelay применяется.
Если Particle System уже играет, система продолжает воспроизводить и сбросить время воспроизведения на 0. Для циклических систем сброс может не иметь видимого влияния. Однако для нециклических систем частицы могут вновь начать выделять, в зависимости от конфигурации системы.
using UnityEngine;
public class SimpleParticleSystemController : MonoBehaviour { [SerializeField] private ParticleSystem particleSystem;
void Update() { // Press the spacebar to restart the Particle System. if (Input.GetKeyDown(KeyCode.Space)) { particleSystem.Play(); Debug.Log("Particle System restarted. Playback time reset to 0."); } } }
Для скриптового управления воспроизведением Particle System, например, реагирования на события игры или ввод пользователя, Play() является методом, используемым для инициирования или возобновления выброса частиц. Вы можете достичь более полного контроля, используя Play() в сочетании с такими методами, как Pause и Stop, а также путем мониторинга таких свойств, как время и particleCount.
Примечание: Unity не применяется ParticleSystem.MainModule.prewarm когда Particle System возобновляется из приостановленного состояния. Чтобы применить prewarm когда Particle System возобновляется, вызовите Clear после Stop.
Примечание: если вызвать эту функцию повторно до того, как система частиц успеет породить частицу, она сбросит свои внутренние счётчики. Это означает, что при непрерывных вызовах система частиц с низкой скоростью испускания вообще не начнёт воспроизведение.
using UnityEngine;
//The window allows you to play, pause, or stop the system, toggle child system inclusion, and view information like playback time and particle count. public class ParticleSystemControllerWindow : MonoBehaviour { ParticleSystem m_ParticleSystem; Rect m_WindowRect = new Rect(0, 0, 300, 120); bool m_IncludeChildren = true;
void Start() { m_ParticleSystem = GetComponent<ParticleSystem>(); } void OnGUI() { m_WindowRect = GUI.Window("ParticleController".GetHashCode(), m_WindowRect, DrawWindowContents, m_ParticleSystem.name); }
void DrawWindowContents(int windowId) { if (m_ParticleSystem) { GUILayout.BeginHorizontal(); GUILayout.Toggle(m_ParticleSystem.isPlaying, "Playing"); GUILayout.Toggle(m_ParticleSystem.isEmitting, "Emitting"); GUILayout.Toggle(m_ParticleSystem.isPaused, "Paused"); GUILayout.EndHorizontal();
GUILayout.BeginHorizontal(); if (GUILayout.Button("Play")) m_ParticleSystem.Play(m_IncludeChildren); if (GUILayout.Button("Pause")) m_ParticleSystem.Pause(m_IncludeChildren); if (GUILayout.Button("Stop Emitting")) m_ParticleSystem.Stop(m_IncludeChildren, ParticleSystemStopBehavior.StopEmitting); if (GUILayout.Button("Stop & Clear")) m_ParticleSystem.Stop(m_IncludeChildren, ParticleSystemStopBehavior.StopEmittingAndClear); GUILayout.EndHorizontal();
m_IncludeChildren = GUILayout.Toggle(m_IncludeChildren, "Include Children");
GUILayout.BeginHorizontal(); GUILayout.Label("Time(" + m_ParticleSystem.time + ")"); GUILayout.Label("Particle Count(" + m_ParticleSystem.particleCount + ")"); GUILayout.EndHorizontal(); } else GUILayout.Label("No Particle System found");
GUI.DragWindow(); } }
Дополнительные ресурсы: Stop, Pause, isEmitting функции.