particles | 输出粒子缓冲区,其中包含当前粒子状态。 |
int 写入输入粒子数组的粒子数(当前存活的粒子数)。
获取该粒子系统的粒子。
只要输入的“粒子”数组预分配一次,该方法不再进行任何分配(见下面的示例)。注意,可能只使用粒子数组的一小部分,具体取决于调用 GetParticles() 时粒子系统中当前存活的粒子数。
另请参阅:Particle、SetParticles。
using UnityEngine;
[RequireComponent(typeof(ParticleSystem))] public class ParticleFlow : MonoBehaviour { ParticleSystem m_System; ParticleSystem.Particle[] m_Particles; public float m_Drift = 0.01f;
private void LateUpdate() { InitializeIfNeeded();
// GetParticles is allocation free because we reuse the m_Particles buffer between updates int numParticlesAlive = m_System.GetParticles(m_Particles);
// Change only the particles that are alive for (int i = 0; i < numParticlesAlive; i++) { m_Particles[i].velocity += Vector3.up * m_Drift; }
// Apply the particle changes to the particle system m_System.SetParticles(m_Particles, numParticlesAlive); }
void InitializeIfNeeded() { if (m_System == null) m_System = GetComponent<ParticleSystem>();
if (m_Particles == null || m_Particles.Length < m_System.main.maxParticles) m_Particles = new ParticleSystem.Particle[m_System.main.maxParticles]; } }