withChildren | 也播放所有子粒子系统。 |
启动粒子系统。
将粒子系统设置为播放模式并启用发射(如果它已禁用)。
如果粒子系统已暂停,则从上次时间恢复播放。
如果粒子系统已停止,则系统从时间 0 开始,如果相关,则应用 startDelay。如果粒子系统正在播放,则系统继续播放,此函数无效。
**注意**: 当粒子系统从暂停状态恢复时,Unity 不会应用 ParticleSystem.MainModule.prewarm。要应用 `prewarm` 在粒子系统恢复时,请在调用 Stop 后调用 Clear。
其他资源: Stop、Pause、isEmitting 函数。
以下示例创建了一个用于操作粒子系统的 GUI 窗口。
using UnityEngine;
public class ParticleSystemControllerWindow : MonoBehaviour { ParticleSystem system { get { if (_CachedSystem == null) _CachedSystem = GetComponent<ParticleSystem>(); return _CachedSystem; } } private ParticleSystem _CachedSystem;
public Rect windowRect = new Rect(0, 0, 300, 120);
public bool includeChildren = true;
void OnGUI() { windowRect = GUI.Window("ParticleController".GetHashCode(), windowRect, DrawWindowContents, system.name); }
void DrawWindowContents(int windowId) { if (system) { GUILayout.BeginHorizontal(); GUILayout.Toggle(system.isPlaying, "Playing"); GUILayout.Toggle(system.isEmitting, "Emitting"); GUILayout.Toggle(system.isPaused, "Paused"); GUILayout.EndHorizontal();
GUILayout.BeginHorizontal(); if (GUILayout.Button("Play")) system.Play(includeChildren); if (GUILayout.Button("Pause")) system.Pause(includeChildren); if (GUILayout.Button("Stop Emitting")) system.Stop(includeChildren, ParticleSystemStopBehavior.StopEmitting); if (GUILayout.Button("Stop & Clear")) system.Stop(includeChildren, ParticleSystemStopBehavior.StopEmittingAndClear); GUILayout.EndHorizontal();
includeChildren = GUILayout.Toggle(includeChildren, "Include Children");
GUILayout.BeginHorizontal(); GUILayout.Label("Time(" + system.time + ")"); GUILayout.Label("Particle Count(" + system.particleCount + ")"); GUILayout.EndHorizontal(); } else GUILayout.Label("No Particle System found");
GUI.DragWindow(); } }