なんやかんやでやってきます。

情弱な僕がゲームや音楽のレポートを書いてきます。

【Unity】ParticleSystem入りゲームオブジェクトを自動削除

はじめに

Unityの記事です。

 

Unity 2017.3.1f1

で動作確認

 

今回はタイトルの通り、パーティクルシステムを使用している、ゲームオブジェクトを、パーティクルが再生終了した時点で、自動削除するスクリプトの紹介です。


 

使用用途

パーティクルエフェクトを複製したとき、Hierarchyをみると複製されたオブジェクトでいっぱいになっている時がありませんか?


この問題を解消していきましょう。


一例として、下記のスクリプトをパーティクルエフェクトがアタッチされたゲームオブジェクトに追加すれば自動で削除されますよ。


AutoDestoryPartcle.cs

 

gist9d6a183386ec737312f46b0cf23b7ecf

内容

f:id:dadapo:20180301120937p:plain

同じゲームオブジェクトにアタッチされているParticleSystemのDurationが存続時間となっています。

この画像の場合1秒後に削除。

 

注意点

子ObjectにParticleSystemを使用中、子のDurationが、親のParticleSystemのDurationより長めに設定していた場合でも、自動削除されます。

AutoDestoryPartcles.cs

上記の問題を対策したスクリプト

AutoDestoryPartcles

 他にも

 

スクリプトをアタッチするのは面倒だという人は、

Instantiateするときに、下記の方法で複製すると、自動削除されます(処理内容はほぼ同じ)

 

AutoDestroyInstantiate

上記のようにに生成すれば自動削除されます。

 

どちらを選ぶかはお好みで。