single.php

Unity でButtonのクリックイベントが発生しない場合の対処法

Unityで、Buttonに設定したクリックイベントが実行時に発生しない現象にハマったので対処法を備忘録的に投稿します。

インスペクターで設定したGameObjectの表示

クリックイベントが発生しない原因は、沢山あります。私もかなり経験してきましたが、今回のは、見つけるのに時間がかかりました。

例えば[Scene]の階層に[EventSystem]が追加されていないとか、Buttonオブジェクトの上に別のコンテナーが被っているとか…

Buttonのクリックイベントが発火しない原因は様々ありますが、今回私がハマった原因は、ボタンのレイアウトでした。

Buttonのインスペクターで[Rect Transform]で[Stretch]を設定します。

すると、ボタンの枠線が消えてフラットな外観に変わります。

これが、Unityの罠でした。

おそらく、親オブジェクトの内側とButtonの外側を一致させるためボタンをクリックできなくさせていると考えられます。

Unityのクリック取得が内部的に、どのように行われているのか知りませんが、実行するとボタンをクリックしても凹まなくなります。

[Stretch]を解除すると、クリックイベントを受け付けるようになるので、レイアウト変更をする場合には注意が必要です。

どうしても、外側のオブジェクトにサイズを合わせたい場合には、Vertical Layout Groupなどレイアウトを管理するコンポーネントで外側で合わせるようにする方が無難です。

まとめ

今回は短い記事ですが、Buttonに設定したクリックイベントが実行時に発生しない現象の対処法について書きました。

Buttonのレイアウトで[Stretch]設定を行っている場合に、外観がフラット化してしまい、クリックイベントが発生しなくなる場合があります。

UnityでButtonのクリックイベントが発生しない人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です