渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

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

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

こんにちは、Unityエンジニアのオオバです。

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

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

iPhone6sによる実機プロファイラでの結果

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

Unityエディタ上におけるプロファイラの結果(Deep Profile使用)

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

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

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

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

オススメ記事
検証環境
  • Unity2018.2.11f1