GetComponentは負荷が高く、多用するべきではないという話を聞きました。
では一度にどれくらい実行したら負荷が可視化されるのかと検証してみたのですが、負荷を観測することができません。
以下の様なコードで検証を行いました。
C#
1 var shot = _shotPool.GetPoolObj(0); 2 3 for (int g = 0; g < 10000; g++) 4 { 5 var a = shot.GetComponent<hogehoge>(); 6 var b = shot.GetComponent<CircleCollider2D>(); 7 }
※GetPoolObj関数で任意のオブジェクトを取得しています。
※shotオブジェクトにはhogehoge.csとCircleCollider2Dをアタッチ済みです。
上記のスクリプトを実行すれば1フレームにGetComponentが2万回実行されることになり、一時的にフレームレートが著しく低下するだろうと期待しました。
しかしFPSは全く落ちません。更に6万回ほどに増やしても落ちません。
これは流石にGetComponentが軽いのではなく、私の検証方法が間違っているのだろうと思いました。
上記のコードのどこが正しくないのか分かる方いましたら、ご教示いただけると幸いです。
(上記のコードは間違えておらず「GetComponentは重い」という認識が間違いなのでしたらそれはそれで喜ばしい事なので教えて下さると助かります。)

回答1件
あなたの回答
tips
プレビュー