Unity 6.3
0 онлайн 58 гостей 3 в системе
Вход

ParticleSystem.GetParticles

Declaration

public int GetParticles(out Particle[] particles);
public int GetParticles(out Particle[] particles, int size);
public int GetParticles(out Particle[] particles, int size, int offset);
public int GetParticles(out NativeArray<Particle> particles);
public int GetParticles(out NativeArray<Particle> particles, int size);
public int GetParticles(out NativeArray<Particle> particles, int size, int offset);

Параметры

Параметр Описание
частицы Выходной буфер частиц, содержащий текущее состояние частиц.
размер Число элементов, которые считываются из Particle System.
офсет Смещение в активный список частиц, из которого копировать частицы.

Возвращаемое значение

инт Число частиц, записанных на входной массив частиц (число частиц, живущих в данный момент).

Описание

Получает частицы этого Particle System.

Этот метод свободен от распределения, пока входной массив "частиц" предварительно распределен один раз (см. пример ниже). Метод получает только частицы, которые в данный момент живы в Particle System, когда он вызван, так что он может получить только небольшую часть массива частиц.

Дополнительные ресурсы: 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]; } }