この記事について
この記事ではToggleの状態取得とonValueChangedイベントについてスクリプト制御する方法について説明します。
この記事でわかること
- toggle.isOn でチェックの有無を取得・設定できる
- onValueChanged.AddListener で切り替えイベントを処理できる
Toggleとは?
Toggleについては以下の記事を参考にしてください。
Toggleをスクリプトで参照する準備
ヒエラルキーで右クリックをしてToggle、TextMeshPro、空のGameObjectを用意します。
・「右クリック」→「UI」→「Toggle」
・「右クリック」→「UI」→「Text – TextMeshPro」
・「右クリック」→「Create Empty」
次にスクリプトを作成して「Create Empty」にアタッチしてください。

isOnで状態を取得・変更する方法
今回はToggleの「isOn」で状態を変更し、取得した状態をテキストに反映します。
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class Toggle_Test : MonoBehaviour
{
[SerializeField] private TMP_Text testText;
[SerializeField] private Toggle testToggle;
void Start()
{
// GameObjectにアタッチされている子オブジェクトのTMP_Textを取得
testText = this.GetComponentInChildren<TMP_Text>();
// GameObjectにアタッチされている子オブジェクトのToggleを取得
testToggle = this.GetComponentInChildren<Toggle>();
// OFFに強制設定
testToggle.isOn = false;
testText.text = testToggle.isOn.ToString();
}
}
実行してみると、チェックが外れてFalseとなりましたね。
onValueChangedでイベント処理する方法
イベント「onValueChanged」を設定することでToggleの状態を監視していきます。
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class Toggle_Test : MonoBehaviour
{
[SerializeField] private TMP_Text testText;
[SerializeField] private Toggle testToggle;
void Start()
{
// GameObjectにアタッチされている子オブジェクトのTMP_Textを取得
testText = this.GetComponentInChildren<TMP_Text>();
// GameObjectにアタッチされている子オブジェクトのToggleを取得
testToggle = this.GetComponentInChildren<Toggle>();
testText.text = testToggle.isOn.ToString();
testToggle.onValueChanged.AddListener(OnToggleChanged);
}
private void OnToggleChanged(bool value)
{
testText.text = value.ToString();
}
}
実行してみると反映されていることがわかりますね。
まとめ
- toggle.isOn → 状態取得・設定ができる
- toggle.onValueChanged → 値変更イベントを拾える