particles | Particle buffer that is used for writing particle state to. The return value is the number of particles written to this array. |
int 写入输入粒子数组的粒子数(当前存活的粒子数)。
Get the particles of this particle system.
只要输入的“粒子”数组预分配一次,该方法不再进行任何分配(见下面的示例)。注意,可能只使用粒子数组的一小部分,具体取决于调用 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.maxParticles)
m_Particles = new ParticleSystem.Particle[m_System.maxParticles];
}
}