Version: 5.5
public int GetParticles (Particle[] particles);

パラメーター

particles パーティクルステートを書き込むのに使われるパーティクルバッファ。戻り値は、この配列に書き込みされたパーティクルの数です。

戻り値

int Input パーティクル配列に書き込まれたパーティクルの数(現在生存しているパーティクルの数)。

説明

パーティクルシステムのパーティクルを取得します

この方法は、いったん Input「パーティクル」配列が前もって割り当てられている限り、割り当ては自由です(以下の例を参照)。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.maxParticles) m_Particles = new ParticleSystem.Particle[m_System.maxParticles]; } }