まさこは技術メモ

Unityエンジニアのつぶやき

FindObjectOfType<> とか GameObject.Find はまじでやめてクレメンス

これを使っているプロジェクトがたまによくある。 いや、これを使ってさ、どこかの変数にFindしたやつをキャッシュしてそれを使うのはまぁ許す

ただし、これを Unity の Update() で毎回取得するようなコード書いている人がたまによくいるのがマジで困りもの。

FindObjectOfType とかさ、現在 Instantiate されている GameObject すべて に対して検索しているのよ。 つまり GameObject が10000個あったら、10000回 Find しているの。 これを毎フレーム取得しようとすると、あとはわかるよね??

FindObjectOfType はさらに厄介なのが、1つの GameObject に対してくっついているコンポーネントの数だけ探そうとするのね

ということは 1つの GameObject に5個のコンポーネントがくっついているとして、その GameObject が10000個あるとしたら、最悪 50000回 Find することになるのね

それを毎フレームですよ

あとはまじでつらいのが、GameObject.Find があるおかげで、GameObject にくっついているコンポーネントが実質 Singleton になるパターンがマジでしんどい

GameObject.Find系のメソッドを禁止にさせる方法ないのかな?? それさえできなくさせれば、まだ幾分ましなコードになりやすいよなと思った次第。