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

uGUIを使ってUI開発する際に、
RaycastTargetの負荷
課題になるときがあります。

一般的に必要最低限のRaycastTargetに
絞ったほうが良いとされているのは、
負荷が上がるためです。

どういった理由で負荷が上がるのか、
本記事ではRaycastTargetの負荷について解説します。
またRaycastTargetで重くなる最悪のケースも紹介します。

RaycastTargetは必要なUIだけにすべき

RaycastTargetは必要なUIにだけ設定すべき理由は、
RaycastTarget ONのUIの数だけタップ時の負荷が高まるからです。

RaycastTarget ONのUIの数が重要です。

数が増えるほどタップしたときの
反応は悪くなります。(負荷が上がります)

負荷を軽減するためにやるべきことまとめ

この2点を覚えておきましょう。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

【最悪のケース】RaycastTarget ONのUIを重ね過ぎると負荷

RaycastTarget ONのUIが大量に重なる時
最も負荷が上がります。

コチラの画像を御覧ください。

【uGUI】RaycastTargetの使いすぎで負荷が上がる理由_0

※わかりやすく伝えるため極端に負荷をかけています

3パターン用意しました。

  1. RaycastTarget OFF
  2. 画面タップ(RaycastTarget ON時)※UIには触れていない
  3. RaycastTarget ONのUIが重なる部分をタップ

3. RaycastTarget ONのUIが重なる部分をタップが最も負荷が高いです。

RaycastTargetのUIが重なると負荷が上がる理由は、
UI同士のソート処理が増えるためです。

↓これが原因です。

Unityエディタ UnityProfilerの結果

【uGUI】RaycastTargetの使いすぎで負荷が上がる理由_1

通常使用であれば気にする必要なし

ただ普通に使っているぶんには、
そこまで神経質になる必要はないです。

カリカリにチューニングする必要がある時に
チェックしてみましょう。

UIに触れていなくても負荷は上がる

地味に重要なのは2番「画面タップ」です。

UIに触れていなくても画面をタップしただけで
負荷が固定費として計上
されます。

毎フレームの負荷なので、
タップしている間ずっと重い状態です。

RaycastTargetの数が増えるほど
負荷は上がるため注意が必要ですね。

RaycastTargetの対象uGUIのおさらい

おさらいになりますが、
RaycastTargetを設定できるuGUIは4種類あります。

これら4種類のuGUIがRaycastTargetの対象です。

※Buttonはタップの必要があるためOFFにすることはないでしょう

【uGUI】RaycastTargetの使いすぎで負荷が上がる理由_2

※↑こちらはImageのインスペクタ。RaycastTargetが必要なければチェックを外しましょう。

RaycastTargetの使いすぎで負荷が上がる理由のまとめ

もしUIを開発していて
タップで重く感じた時、

次の2点を思い出しましょう。

タップはユーザーと最も近いアプリとのコミュニケーションです。
タップの感触でユーザは離れます。

気持ちの良いタップ処理を実装するためにも
RaycastTargetの負荷は軽視しないほうが良いでしょう。

uGUIは開発が進むにつれて膨大な量となります。
開発序盤からRaycastTargetをOFFにしておくことをオススメします。

あとから大量のUIをチェックするのは大変ですからね。

「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!

最後まで読んでいただきありがとうございました!
すばらしいRaycastTargetライフをお過ごしください。

オススメ記事
検証環境