ボタンが反応しないよ......?」という悩み。ゲーム実行中にボタンをクリックしても、カチカチと音が響き渡るだけ。なんてときに確認したいのが以下の3点。シーン内にEventSystemがあるかボタンのOnClick()は設定してあるかRaycastTargetがTrueのUIが手前にないか特に3番目は画面内のUIが増えてくると重なりまくって起こりがちです。画面付きで解説するので、ひとつひとつ確認してもらえるといいかも。2.1.0シーン内にEventSystemがあるかEventSystemはあるかな?シーンのHierarchyウィンドウにEventSystemオブジェクトがない場合、ボタンをクリックしたことが検知されません。通常、シーン内で何らかのUI要素(ImageやTextなど)を作成したとき、自動的にEventSystemオブジェクトが作成されます。Prefab化したUIをシーンに配置したり、Canvasをそのままコピーして別のシーンに配置したりするとEventSystemオブジェクトは作成されないんです。Canvasをコピーして別のシーンに持っていくことを考えます。『UICheck』というシーンでCanvasをコピーします。『UICheck2』というシーンを作成し、ペーストします。別のシーンを作ってペーストすると......なんと、EventSystemオブジェクトがないままコピーされました。コピーの対象に入れていないので当然っちゃ当然なのですが、急いでいるときにはEventSystemオブジェクトがないことに気付かないこともあります。EventSystemは作られないちなみにこの状態でButtonオブジェクトを作成しても、EventSystemオブジェクトは作成されません。なるとテストプレイするまで多分気付きませんね。Buttonを作成ボタンのOnClick()は設定してあるかOnClick()の設定忘れこれもよくありがちですが、スクリプトでボタンを押した時の動作を書いたにもかかわらず、ButtonコンポーネントのOnClick()で設定を忘れるパターンです。「スクリプトの処理はちゃんと書けてるのに......」なんて思っていても、Unityエディタでの操作を忘れていたら動いてくれません。スクリプトを書いた後ってすぐに動作確認したくなってしまうので、結構やっちゃいがちです。慣れてくればすぐここに気付くと思います。OnClick()で呼ぼうとしているメソッドが見つからない場合は、対象のメソッドがpublicになっているかも確認します。ボタン関係でもうひとつ思い浮かんだケースが、ボタンコンポーネントのinteractableがfalseになっている場合。デフォルトだとボタンの色が変わるので気付くと思いますが、これも念の為確認しておくといいでしょう。ひとつひとつ確認するのが大事ですね。RaycastTargetがTrueのUIが手前にないか見落としがちなRaycastTarget「EventSystemもシーン内にあるし、ButtonのOnClick()だって設定してある。なんでボタンが反応しないの?」という時の犯人は大体RaycastTargetです。Raycastはグラフィックの上にカーソルやポインタがあるかどうかを確認する機能です。イメージとしては、クリックした時にマウスカーソルからRay(光線)が出て、それが何かのUI(例えばボタン)に当たったら「今ボタンの上にカーソルがあります」と判断する感じです。このRaycastを受け取るかどうかの設定がRaycastTargetで、TextやImageに設定があります。ボタンオブジェクトの場合は、Buttonコンポーネントと一緒にアタッチされているImageコンポーネントの側でRaycastTargetの設定を持っています。ポイントは何かのUIに当たったらそこで処理が終了すること。複数のUIが重なっていると、画面から見て一番手前のRaycastTargetがTrueのUIに当たった時点で処理が終わり、その後ろにあるUIについては判定が行われません。Hierarchyウィンドウで上にあるオブジェクトは画面奥、下にあるオブジェクトは画面手前に描画されます。ボタンの手前にRaycastTargetがTrueになっているTextやImageがあると、ボタンの上にカーソルがあると認識されず、ボタンに対するクリックも認識してくれないことに。Unityの中では手前のTextやImageがクリックされたと認識されるんですね。Textの場合は、Textフィールドに入力されている内容に比べてWidthやHeightが大きい場合にボタンと重なっていることがあります。Imageの場合はアルファが0(透明)になっていると重なっていることに気付きにくいです。画面全体を覆うマスク用の画像でRaycastTargetがTrueになっていて、アルファを0にして画面を表示したときにボタンが反応しない、なんてことがあります。大きさの調整を行なったり、そもそもクリックが必要ないTextやImageではRaycastTargetをFalseにしておくと良いかもしれません。分かりやすいコンポーネント、分かりにくいコンポーネントがあるので画像で確認しましょ。ImageImageのRaycastTargetImageコンポーネントでは一番下にあります。項目数が少ないので分かりやすいですね。Rectの項目が増えているので、その上にあります。TextTextのRaycastTargetTextコンポーネントでは一番下にあります。項目が増えるのでちょっと戸惑うかもしれません。TextのRaycastTargetザ・分かりにくい代表。Settings』の中にあります。見落としがちなので注意。ButtonButtonのRaycastTargetButtonオブジェクトの場合は、Buttonコンポーネント本体ではなく、一緒にアタッチされているImageコンポーネントにRaycastTargetの設定が含まれています。Graphic』です。ここで指定されたImageのRaycastTargetを見ています。Graphic』で指定されているImageがRaycastTargetの設定を持っているので、そちらを確認します。いっても、これらのオブジェクトの場合はRaycastTargetをFalseにすることは無いと思うので、念の為の確認項目として考えてもらえればいいかもしれません。まとめ今回はUIが反応しないときに確認したい3つのポイントをお伝えしました。シーン内にEventSystemがあるかボタンのOnClick()は設定してあるかRaycastTargetがTrueのUIが手前にないか個人的に3番目のRaycastTargetに引っかかることが多いので、もし画面をクリックしても反応が無い場合はチェックしてみてください。「こういうケースもあるよ!」という素敵なアイディアがあったらコメ欄に書いていただけると助かります。↓よかったらシェアをお願いします!ゲーム開発の攻略チャートを作りました!「ゲームを作ってみたいけど、何から手を付けていいか分からない!」そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。投稿一覧Unityを使ってアプリを作ったり、Assetを作ったりしてる個人開発者。Unity全般ネタとAsset開発の情報を扱っています。Asset開発は日本語の情報が少ないのよね。ことで些細なネタでも情報を蓄積するのが目的です。2018.10.29ゲームの見た目に関わる部分として、カメラワークが挙げられます。GraphがUnity2018.3.0bxで使えるらしいので、まずはベータ版のインストールから。World!』の表示をUnityでやってみます。初心者向けに画像付きで解説しています。2020.02.13「Unityではどんなプログラミング言語を使うの?」という疑問に答える記事です。タイトルでネタバレしていますが、UnityではC#を使います。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。todoUnity、ボクセルアート、VFXが好き。教員免許を取ったのちブラック企業に就職→フリーランスに。おかげさまでUnityをいじって4年経ちました。自分で作ってリリースしたアプリは3本です。夏場は米を作りながらゲームも作る生活。このブログではUnity初心者に向けたチュートリアルやテクニックを放出しています。詳しいプロフィールはこちら。お仕事の相談や現在提供中のサービスについては、こちらの『サービス内容』のページをご覧ください。Explorers_todoオンライントレーニングのサイトをオープン!エクスプラボを運営しているtodoが、より集中的にゲーム作りについて学べるオンライントレーニングのサイトをオープンしました。エクスプラボのトレーニングルーム』です。勉強したことの進捗も表示できるようになっているので、どれだけ頑張ったのかが分かるようになっています。ゲーム開発の攻略チャート』というe-bookをプレゼントしています。メルマガではゲーム開発のテクニックを中心に役立つ情報をお届けします。詳しくはこちら!お仕事の依頼はこちら!ゲーム開発のサポートも可能!エクスプラボではゲーム開発のサポートのサービスも行なっています。いう場合にオススメのプランです。詳細はこちら!もちろん、普通に開発依頼をいただいてもお手伝いできます。その場合はお問い合わせへ。困った時に聞ける相談プランもご用意しました。30日間、いつでも分からないことを聞けるサービスです。Processing】RANKING【Unity】Mathfの切り上げ、切り捨て、偶数丸め。使い分けが大事よねMathf【Unity】ゲームといえばランダム要素。(19)作ったアプリ空とにゃんこと風船と癒し系縦スクロール避けゲーの『空とにゃんこと風船と』(TODOWORKS名義でリリース)気軽に遊べるスマートフォン向けアプリです。ボクセルアートで彩られるどこかレトロ、でも新しい世界で癒されてみませんか?ぼく、猫ですって!タップ系RPG『ぼく、猫ですって!』(TODOWORKS名義でリリース)気軽に遊べるスマホRPG。