ToggleGroup
UnityのToggleGroupは各Toggleをまとめてラジオボタンみたいに一つしか選択できないようにする機能
つまりこの機能がオフならチェックボックスみたいに複数選択可能で、オンならラジオボタンってこと!だと思った。
動的に切り替えたい
同じToggleGroupをラジオボタンみたいに扱うとき(ToggleGroupの機能有効)とチェックボックスみたいに扱うとき(ToggleGroupの機能無効)をスクリプトから切り替えたい。
試した事
なのでスクリプトからToggleGroup.enabled=falseにしたら、インスペクタ上はちゃんとオフになっているのに、変わらずラジオボタンみたいに動く><
なんでや~~
スクリプトから操作しているからタイミング的な問題なのかと思って、新しいシーンでインスペクタ上でやってみたけど、同じように無効にならない
ToggleGroupがついているスクリプトごとオフにしたけどダメ。何ならAllowSwitchOffの挙動まで反映されるやん!なんで!!逆に何がオフになるんだよ
ToggleGroupのenabledによると
「有効であれば更新され、無効であれば更新されません。」
だって。更新って何だろう?
各ToggleにToggleGroupがセットされている時点で、ToggleGroupのオンオフは関係ないのだろうか?
ToggleGroupの中身
中の実装普通に見れた。
Updateとかで中の状態を更新しているわけではなく、最初しか呼ばれなさそう
ちなみにtoggleの使い方も説明してあった
解決方法1
チェックボックスにするとき、各ToggleのgroupをNullにする
_Toggle.group = null;
ラジオボタンにするときは、ToggleGroupをセットする
_Toggle.group = _ToggleGroup;
一応これで想定通りの動きはした
Toggleはfoerachなどでまわす
話し合い
ToggleGroupの話し合いはここで行われていた。
AllowSwitchOffの項目も、このスレッドの結果実装されたみたい。
そして後半のほうで
「'allowMultipleSelection'を使用できる可能性はありますか?これにより、トグルグループをオフにできるかどうかだけでなく、ユーザーが複数の選択肢を選択できるかどうか、およびグループ内で少なくとも1つのトグルが許可されるかどうかを制御できます。」
と聞いている人がいる!私も欲しい!!!!
でも結局実装されなかったのかな?
最後に
他の方法としてはToggleGroupからToggleをUnregisterして、またRegisterし直すとかかな??
でもScriptからRegisterもうまくいかなかった気がする。
他にいい方法があったら教えてください。