(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


ParticleSystemのパーティクルの数を、瞬時に好きな数だけ減らしたり増やしたりする方法【Unity】【Particle System】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 6000.3.4f1



はじめに

今回は再生中のParticle Systemのパーティクル(粒子)の数を、

瞬時に好きな数だけ減らしたり増やしたりする方法の紹介です!



パーティクルの数を、瞬時に好きな数だけ減らしたり増やしたりする

まずParticle Systemの各粒子はGetParticlesで取得出来ます。



ただし、直接返り値として取得出来るわけでなく引数で配列を渡す感じになります。

//各粒子を取得/*_particleSystemがParticleSystem*/
ParticleSystem.Particle[] particles = new ParticleSystem.Particle[_particleSystem.particleCount];
    
//現在の粒子の数を取得
var aliveCount = _particleSystem.GetParticles(particles);


同様にSetParticlesというメソッドを使えば粒子を設定できるので、

GetParticlesで粒子取得後、必要な数だけ指定して設定すれば、多い分の粒子を減らせます。

//各粒子を取得/*_particleSystemがParticleSystem*/
ParticleSystem.Particle[] particles = new ParticleSystem.Particle[_particleSystem.particleCount];
    
//現在の粒子の数を取得
var aliveCount = _particleSystem.GetParticles(particles);

//10個に減らす(もともとが10個以下なら減らさない)
_particleSystem.SetParticles(particles, Mathf.Min(10, aliveCount));


逆に増やしたい時にはEmitというメソッドを使えば新しい粒子を追加で発生させられます。

//パーティクルを10個増やす
_particleSystem.Emit(10);


ただし、maxParticlesの値は超えて増やすことは出来ません。