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を設定しているか確認しよう
