この記事でのバージョン
Unity 2021.1.23f1
はじめに
以前Unityのパーティクルが終わった時に処理を実行する方法を紹介したのですが、
今回はそのやり方で再生の終了が検知出来ない場合があったのその紹介記事です!
ちなみにUnityのバージョンによって挙動が違います。
なお、記事中では以下のアセットを使っています。
![]() |
Sci-Fi Arsenal | VFX Particles | Unity Asset Store |
再生の終了が検知出来ない場合
まずパーティクルの終了の検知するにはStop ActionをCallbackにして、
![]() |
そのStop Actionを設定したParticle Systemが付いてるオブジェクトと同じオブジェクトに
以下のようにOnParticleSystemStoppedというメソッドを実装したコンポーネント追加します。
/// <summary> /// パーティクルの再生が終わった時に実行される /// </summary> private void OnParticleSystemStopped(){ Debug.Log("パーティクル終わったよ!"); }
![]() |
この時、Looping(何度も繰り返すか)が有効になってると元から再生の終了が検知出来なったのですが、
Unity2020辺りから子のパーティクルのLoopingが有効になっていても終了の検知が出来なくなりました。
(Unity2019の頃は子のLoopingが有効でも終了の検知が出来た)
![]() |
なので再生の終了が検知出来ない場合は子のパーティクルも含めて設定も確認すると良いかと思います。