(:3[kanのメモ帳]

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

(:3[kanのメモ帳]


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

    

パーティクルのStop Actionで再生の終了が検知出来ない【Unity】【Particle System】【トラブルシューティング】


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


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


はじめに

以前Unityのパーティクルが終わった時に処理を実行する方法を紹介したのですが、


f:id:kan_kikuchi:20190525055036g:plain


今回はそのやり方で再生の終了が検知出来ない場合があったのその紹介記事です!

ちなみにUnityのバージョンによって挙動が違います。


なお、記事中では以下のアセットを使っています。

Sci-Fi Arsenal | VFX Particles | Unity Asset Store



再生の終了が検知出来ない場合

まずパーティクルの終了の検知するにはStop ActionをCallbackにして、

f:id:kan_kikuchi:20211026173829j:plain


そのStop Actionを設定したParticle Systemが付いてるオブジェクトと同じオブジェクトに

以下のようにOnParticleSystemStoppedというメソッドを実装したコンポーネント追加します。

/// <summary>
/// パーティクルの再生が終わった時に実行される
/// </summary>
private void OnParticleSystemStopped(){
  Debug.Log("パーティクル終わったよ!");
}
f:id:kan_kikuchi:20211026173918g:plain


この時、Looping(何度も繰り返すか)が有効になってると元から再生の終了が検知出来なったのですが、

Unity2020辺りから子のパーティクルのLoopingが有効になっていても終了の検知が出来なくなりました。

(Unity2019の頃は子のLoopingが有効でも終了の検知が出来た)

f:id:kan_kikuchi:20211026173903j:plain


なので再生の終了が検知出来ない場合は子のパーティクルも含めて設定も確認すると良いかと思います。