渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

UnityEngine.Object.nameアクセスするとGC Allocされる件


f:id:esakun:20150730215258g:plain

UnityEngine.Object.nameするだけで、ヒープ領域を毎回確保するようです。
Unityのプロファイラを見てて気づきました。

以下僕の環境における実績。

iPhone6sによる実機プロファイラでの結果 f:id:esakun:20181017185246p:plain

UnityEditor上におけるプロファイラの結果(Deep Profile使用) f:id:esakun:20181017185419p:plain

if (this.name == "hoge"){}

上記のようにコンポーネントやGameObjectの名前を比較対象としてほげほげすることはよくある処理なので、毎フレーム実行している箇所がある場合は、nameをキャッシュして使用するのが良いかと思われます。

なぜ、こうなっちゃうのか原因を追ってもネイティブ側の処理なので分かりません。
.nameは使用箇所によっては見直そう!

環境

  • Unity2018.2.11f1