実行環境
Windows7 Professional 64bit
Unity5.6.3.p1
C#
忙しい人向けのまとめ
Navigationをnoneにする
本当は最初からToggleを使ってね☆
はじめに
UnityのuGUIでトグルボタンを実装したい時はToggleコンポーネント(+ToggleGroupe)を使うと思います。
しかし、初期にButtonコンポーネントで作成し実装が進んでしまった場合、Toggleに差し替えるのが大変になったりします。
そこでなんとか誤魔化す方法を紹介します。
実例
これは実際に私がPSSというツール(ストアリンク)で実装している画像です。
以下のような(ButtonでToggleを実現するという無駄な)動作を想定して組んであります。
- ボタンを押す
- 選択されたボタンのTransition/Normal Colorを変える
- 選択されたボタンの情報を別の場所に表示させる
- もう一度同じボタンを選択した場合、情報を削除しTransition/Normal Colorを元に戻す
しかしButtonコンポーネントの設定を変更していない場合、下の画像のように選択を解除しても色が戻りません。
これは該当のボタンにフォーカスが移っている状態であり、ButtonのTransitionがHighlighted Colorになっているからです。
解決方法
Navigationをnoneにすれば解決します。フォーカスが移らない=Highlighted ColorではなくNormal Colorにもどる、という動作になるからです。
しかしキーボード操作は出来なくなるので、コントローラーやキーボード操作を考えているアプリの場合は使えない手です。
まとめ
最初からToggleを使おう。