【Unity】チェックボックスとラジオボタン


設定画面なんかでよく使うチェックボックスやラジオボタンのメモ。

スクリプトで管理して値保存もする。

Checkbox(ON / OFF ボタン)

Create > toggle からトグルボタンを新規作成して中身をイジる。

  1. Labelを削除
  2. BackgroundのImageにOFFのスプライトをアタッチ
  3. CheckmarkのImageにONのスプライトをアタッチ
  4. Background、CheckmarkのPositionとSizeを同じにする

PlayerPrefs には bool が保存できないので int で保存。

Radio Button(択一ボタン)

チェックボックスを並べてスクリプトで管理しても実現できるけど、数が増えるとスクリプトが長くなって面倒になる。(配列を使えば多少はマシ)

もっと簡単に普通のボタン機能を使ってラジオボタンを作ってみる。

まず空(Empty)オブジェクトの下にラジオボタングループを配置する。

中のボタンを以下のように変更する。

  1. ButtonのTransitionをSprite Swapに変更
  2. ImageにOFFのスプライトをアタッチ
  3. Disabled SpriteにONのスプライトをアタッチ
  4. Onclickに関数をアタッチ

ボタンのほうに関数をアタッチするのでスクリプトはシンプルになる。

欠点として選択済みのボタンが押せないけど普通のラジオボタンなら問題ないはず。

 

追記:Radio Button その2

Toggle Groupを使った方法。

1.Checkbox と同じ要領で Toggle を複数用意する

2.どれか1つに Toggle Group コンポーネントを追加

3.全部の Toggle コンポーネントの Group に Toggle Group をアタッチ

4.Toggle Group をスクリプトで管理

専用のコンポーネントだけあって全体の管理は楽だけど、変更時の動作とか初期値の設定とかすると途端にごちゃつく。

値保存を楽にするために名前を使ってみたけどコレもいまいちスマートでない…。

しかし、保存・読み込みがない一時的な択一選択をさせたいならコチラのほうが断然使いやすい。

 


「【Unity】チェックボックスとラジオボタン」への2件のフィードバック

  1. コメントありがとうございます。
    ToggleGroupの存在に気づいてませんでした。

    Toggleの1つにToggleGroupコンポーネントを追加して、全部のToggleのGroup変数にアタッチすれば簡単に択一に出来たんですね。
    n番目の選択肢が選ばれたことを保存するために一手間要りそうですが、これが正攻法っぽいので今後はこっちを使ってみます。

コメントを残す

メールアドレスが公開されることはありません。