こんにちは、Unityエンジニアのオオバです。
UnityEngine.Object.name
するだけで、ヒープ領域を毎回確保するようです。
Unityのプロファイラを見てて気づきました。
以下オオバの環境における実績。
iPhone6sによる実機プロファイラでの結果
![UnityEngine.Object.nameアクセスするとGC Allocされる件_0](https://cdn-ak.f.st-hatena.com/images/fotolife/e/esakun/20181017/20181017185246.png#750__80)
Unityエディタ上におけるプロファイラの結果(Deep Profile使用)
![UnityEngine.Object.nameアクセスするとGC Allocされる件_1](https://cdn-ak.f.st-hatena.com/images/fotolife/e/esakun/20181017/20181017185419.png#623__77)
if (this.name == "hoge"){}
上記のようにコンポーネントやGameObjectの名前を比較対象としてほげほげすることはよくある処理なので、毎フレーム実行している箇所がある場合は、nameをキャッシュして使用するのが良いかと思われます。
なぜ、こうなっちゃうのか原因を追ってもネイティブ側の処理なので分かりません。
.name
は使用箇所によっては見直そう!
![](https://i.gyazo.com/87b096ac54d119b606a489c4ccd80aaf.jpg)
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity2018.2.11f1