particles | 输出粒子缓冲区,包含当前粒子状态。 |
size | 从粒子系统读取的元素数量。 |
offset | 复制粒子的活动粒子列表中的偏移量。 |
int 写入输入粒子数组的粒子数量(当前存活的粒子数量)。
获取此粒子系统的粒子。
只要输入“particles”数组预先分配一次(请参见下面的示例),此方法就不会分配内存。该方法仅获取调用时粒子系统中当前存活的粒子,因此它可能仅获取粒子数组的一小部分。
其他资源: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]; } }