public int GetParticles (Particle[] particles);

Parámetros

particlesOutput particle buffer, containing the current particle state.

Valor de retorno

int La cantidad de partículas escritas al arreglo de partícula de entrada (la cantidad de partículas actualmente vivas).

Descripción

Gets the particles of this particle system.

Este método está libre de asignación siempre y cuando el arreglo de "partículas" de entrada se preasigne una vez (vea el ejemplo a continuación). Tenga en cuenta que sólo una pequeña parte del arreglo de partículas podría ser utilizado ya que esto depende de cuántas partículas están actualmente vivas en el sistema de partículas cuando se llama GetParticles ().

See Also: 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]; } }