渋谷ほととぎす通信

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