GameObjectのInstantiateは極力抑えた方がいいよとのことで、なるべく再利用するように心がけようと思います。
自分はエフェクト周りで特に多用していたので、改善を試みた結果が以下になります。
使い方は
ParticleManager.PlayParticle("エフェクト名",座標);
ParticleSystemは再生中かどうかを判別するisPlayingというメンバ変数があるので、それを見て再利用しています。
まあこのような仕組みはもっといいものを誰かしらが既に書いているだろうなということでググると、いつものようにテラシュールブログさんの記事を見つけました。いつものようにです。流石です。(追記:いつもお世話になっていますという意味です(´;ω;`)
再生が完了したらゲームオブジェクトをSetActive(false)にするようにすればこちらで事足りますね。
あと、テラシュールさんの方には一定間隔ごとにプーリングするオブジェクトが一定数以下になるようにクリーンする機能もついてます。
ヒエラルキー上にオブジェクトが増えすぎるとそれだけで処理が重くなるので、こちらの機能も必要ですね。
というわけで、機能をつくるときはできるだけ汎用的に作りたい(願望)という記事になりました。
今回はParticleSystemにしぼっちゃったけどそもそもGameObjectで扱えるようにすればよかったなと。
勉強します。
以上です。