1.記事を書こうと思ったきっかけ
仕事でUnityのUIでWebであるようなラジオボタンの実装を要求されたわけですが、既出の情報が古いせいか、2021年版のUnityでそれを再現しようとして上手くいかず、数時間溶かしてしまったため、今後似たような案件が来た時のために備忘録を残しておこうという気になったからです。
2.作り方
2-1.Toggleを追加する
・ヒエラルキーウィンドウ→+ボタン→UI→Toggle
これでヒエラルキーウィンドウ上にUIとトグルが出現します。ラジオボタンですので複数から一つを選択するわけですから同様の手順でトグルをもっと召喚します。
2-2.召喚したToggleのどれか一つにToggle Groupコンポーネントを追加
今回はToggle1にアタッチさせましたがこれもToggleならどれでもいいです。
・Add Component→Toggle Group
これでToggle1にToggleグループがアタッチされました。Toggle1のインスペクターウィンドウを下までスクロールしたらこうなってると思います。
ご覧の通り一番下にToggle Groupコンポーネントが追加されています。Allow Switch Offの項目はラジオボタンのチェック項目を全て未チェック状態にするかどうかを決めるための要素になってきます。こちらにチェックを入れるとチェック中の箇所を再度クリックすると全てのチェックが外れた状態にできます。
2-3.全てのToggleのインスペクタービューからIs Onの項目を探し、チェックを外す
何も考えずに探して外しましょう。これを外さないと実行時に項目がチェック状態になっちゃってます。ラジオボタンをポチポチするどころの話じゃありません。
2-4.全てのToggleのGroup項目をラジオボタンの選択対象となるグループ名で指定しておく
既出の記事との相違点はここになってきます(それとも既出の情報が言葉足らずなだけか…?)。そのことはさておき、本題に戻りますと、ラジオボタンの選択項目として追加したい全てのToggleのGroup項目について先ほどToggle1に追加したToggle Groupコンポーネントで統一してひとくくりにしていきます。
任意のToggleのインスペクターウィンドウを表示し、下の方にスクロールしていきますと、Groupの項目があります。右側の◎をクリックしてグループとして使えるリストを表示してみますと、Toggle GroupをアタッチさせてあるToggle1が出てきます。
このToggle1をダブルクリックしてGroupにToggle1を指定しましょう。指定したらこうなります。
これを選択項目の対象となる全てのToggleで行いましょう。Toggle GroupがアタッチされているToggleも例外なくです。既出の情報ですと、Toggle GroupがアタッチされているToggleについてはGroupの項目の指定について特に何も記述がなく、指定しなくても大丈夫という印象を受けましたが、指定しておかないとToggle1だけグループから除外されてしまうという処理がされてしまいます。
ともかく、上記の手順でUnityのUIでラジオボタンを再現することができるわけです。
3.まとめ
やっぱりゲームエンジンなだけあってWebと違って面倒くさいです。しかも定期的なバージョンアップで仕様変わるし…。仕事である以上触ってますがWebが恋しくなります。