#UIが反応しない…
上の画像のようにボタンのUIをしっかり設定しているのに、なぜか押せない時ってありますよね?
そんな時は大体RaycastTarget
の設定ミスです。
#RaycastTargetとは
まず、Raycast
というのは指定した場所からRay(光線)
を放ち、光線と接触したオブジェクトの情報を取得する機能になります。
銃を撃って敵を攻撃する時に使用したり、本記事のテーマであるUIの情報を取得したりと様々な場面で使うことのできる機能です。
では**RaycastTarget
とは何か?
もうお分かりだと思いますが、その名の通りRaycast
のTarget(対象)とするか否かを設定するパラメータになります。
これをtrue
にするとRaycast
のTarget(対象)**となるので、情報を取得することができるということです。
#ボタンが押せない理由
本記事最初の画像のボタンが押せなかった理由は、以下の二つが同時に発生している時になります。
- 「Helloテキスト」がボタンより手前にある
- 「Helloテキスト」の
RaycastTarget
がtrue
手前かつRaycastTarget
がtrue
になっていると、背後のオブジェクトまでRay
が通らないのでボタンが反応しない現象が起きるのです。
テキストボックスは見かけを整えるために、実際に見えてる範囲以上の大きさを持っている場合があり、ボタンと重なってしまうことが多いので要注意です。
見かけよりでかいテキスト
#解決策
基本的にボタン以外はRaycastTarget
をfalse
にすることで解決します。
新しくUIを作成する時は注意してみてください。
それでも反応しない場合はボタンのOnClick
が設定されていないか、シーン内にEventSystemがないかだと思われます。
#まとめ
-
Raycast
はRay(光線)
を放ち、光線と接触したオブジェクトの情報を取得する機能 - 基本的にボタン以外は
RaycastTarget
をfalse
にしよう - それでも反応しない場合は
OnClick
を設定しているか確認しよう