【Unity】チェックボックス/ラジオボタンを作る(Toggle)

Unity Toggle チェックボックス/ラジオボタン C#
Unity Toggle チェックボックス/ラジオボタン
バージョン
  • Unity 2022.3.45f1

UnityでUI用のチェックボックスやラジオボタンを作成する方法です。
UnityではToggle(トグル)を使用して以下のようなチェックボックス(ラジオボタン)を作ります。

Toggle

チェックボックスを作成する

Toggleゲームオブジェクトを作成

まずはToggle用のゲームオブジェクトを作成します。

Unity Editor

ヒエラルキーで右クリック
「UI」→「Toggle」

これでToggleゲームオブジェクトが生成され、チェックボックスとして使用できます。

Toggleをスクリプトから制御

よく使うのは以下のものです。

[SerializeField] private Toggle toggle;

//Toggleのゲームオブジェクト名を取得
string toggleName = toggle.name;
//現在のToggleの状態を取得
bool isOn = toggle.isOn;
//イベント(OnValueChanged)にリスナを追加
toggle.onValueChanged.AddListener(SampleListener);

public void SampleListener(bool isOn){}


実際にToggleオブジェクトに次のスクリプトをアタッチして実行します。
ToggleのチェックがONの場合は背景がピンク、OFFの場合は水色になります。

using UnityEngine;
using UnityEngine.UI;

public class ToggleSample : MonoBehaviour
{
    [SerializeField] private Image image;
    private Toggle toggle;

    void Start()
    {
        toggle = GetComponent<Toggle>();
        toggle.onValueChanged.AddListener(Change);
    }

    /// <summary>
    /// OnValueChangedに追加するメソッド
    /// </summary>
    /// <param name="isOn">Toggleの状態</param>
    public void Change(bool isOn)
    {
        if (isOn)
        {
            //ON
            image.color = new Color32(255, 200, 255, 255);
            Debug.Log($"ON");
        }
        else
        {
            //OFF
            image.color = new Color32(200, 255, 255, 255);
            Debug.Log($"OFF");
        }
    }
}

スクリプトのアタッチと背景用のImageを準備しておきます。

Unity Editor


実行結果は以下の通りです。

Toggle
Toggle

このような感じでチェックボックスを実装できます。

ラジオボタンを作成する

上記のようにToggleを複数まとめてWebのラジオボタンのような仕組みができます。

Toggle Groupの設定

ToggleにはToggle Groupという設定があり、Toggleがどのグループに属しているか指定することができます。
同じToggle Groupに属しているToggleはどれか1つだけがONになります。
OFF状態のToggleをONにした時、同じグループのON状態のToggleは自動的にOFFに切り替わります。

今回は空のオブジェクトに設定していきます。

Inspector
Inspector
  • 空オブジェクト生成→インスペクターで「Add Component」をクリック
  • 「Toggle Group」と入力
  • 「Toggle Group」が出てきたらクリック

インスペクターにToggle Groupが追加されたらOKです。

次にToggleに対して作成したToggle Groupを指定します。

Unity Editor

「Toggle Group」→ Toggleの「Group」プロパティにドラッグ&ドロップ

スクリプト実行

次のスクリプトを各Toggleにアタッチします。

using UnityEngine;
using UnityEngine.UI;

public class ToggleSample : MonoBehaviour
{
    private Toggle toggle;

    void Start()
    {
        toggle = GetComponent<Toggle>();
        toggle.onValueChanged.AddListener(Change);
    }

    /// <summary>
    /// OnValueChangedに追加するメソッド
    /// </summary>
    /// <param name="isOn">Toggleの状態</param>
    public void Change(bool isOn)
    {
        if (isOn)
        {
            //ON
            Debug.Log($"ON: {toggle.name}");
        }
        else
        {
            //OFF
            Debug.Log($"OFF: {toggle.name}");
        }
    }
}

ヒエラルキーはこんな感じで4つToggleを準備しておきます。
初期状態はToggleAがONになっています。

Unity Editor


実行すると以下のようになります。
A(初期状態)→ B → C → D の順でONにしています。

Toggle

1回のチェックで2つのToggleが動いています。
これはチェックした時にOnValueChangedというイベントが発動していますが、その名の通り、値が変化した時に発動します。

Toggle Group内のToggleのOnValueChangedイベントは1回のチェックで2つ発動!
・OFF→ON: OFF状態のToggleをONにする
・ON→OFF: 元々ON状態のToggleが自動的にOFFになる

Toggle - Unity マニュアル
Toggle はユーザーがオプションのオンとオフを切り替えることができるチェックボックスです。
タイトルとURLをコピーしました