以前も記事にしたオブジェクトのキャッシュですが、その後こんな感じになりました。
Pluginsフォルダにぶち込んでInstantiateとDestroyをそれぞれOCInstantiateとOCDestroyに置き換えるだけで勝手にずんどこキャッシュされて再利用してくれます。
普通に作ってやって必要に応じて置き換えるだけでいいので使い勝手はいいんですけど、見ての通りシンプルな作りなので色々問題もあります。注意点はこんなところ。
- 再初期化を想定してStartを書く。変数の初期化、コルーチンの停止、など
- OCInstantiate内でStartを呼び出しているので、呼び出し順序に注意
- 階層化されたオブジェクトは非対応
また、シーン間でキャッシュを引き継ぎたい場合、DontDestroyOnLoadした上で、ロード時に総て非アクティブ化してやれば大丈夫なはずです。この辺は今後の課題。
もちろん最初にまとめて作っておいてもいいので、見積を取るために簡単にプロファイリングできるようにしといてもいいですな。もっともそんなふうにカリカリに詰めなきゃダメな時点で色々間違ってる気はします。Unityの場合。