Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

ParticleSystem.GetParticles

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public function GetParticles(particles: Particle[]): int;
public int GetParticles(Particle[] particles);

パラメーター

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

戻り値

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

説明

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

この方法は、いったん Input「パーティクル」配列が前もって割り当てられている限り、割り当ては自由です(以下の例を参照)。GetParticles() を呼び出すとき、パーティクルシステム内にどのくらいのパーティクルが現在生存しているかによってパーティクル配列のわずか小さな部分のみが使用される可能性があることに注意してください。

See Also: Particle, SetParticles.

#pragma strict

@script RequireComponent(ParticleSystem)

var m_System : ParticleSystem; var m_Particles : ParticleSystem.Particle[]; public var m_Drift = 0.01f;

function LateUpdate() {

InitializeIfNeeded(); // GetParticles is allocation free because we reuse the m_Particles buffer between updates var numParticlesAlive = m_System.GetParticles(m_Particles); // Change only the particles that are alive for (var 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); }

function InitializeIfNeeded() { if (m_System == null) m_System = this.GetComponent.<ParticleSystem>(); if (m_Particles == null || m_Particles.Length < m_System.maxParticles) m_Particles = new ParticleSystem.Particle[m_System.maxParticles]; }
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]; } }