WisdomSoft - for your serial experiences.

トグルボタン

チェック状態を表示し、オンとオフの状態を切り替える目的に応用されるトグルボタンを紹介します。

オンとオフの切り替え

有効または無効の状態を切り替える処理にはトグルボタンを用いると便利です。通常のボタンは押されると何らかのアクションを実行しますが、トグルボタンは有効または無効の状態を表すチェックマークを表示します。ボタンが押されたときに状態を切り替えることで、スイッチのオンとオフを切り替えるような処理が可能となります。

トグルボタンを描画するには GUI クラスの Toggle() メソッドを呼び出します。

GUI クラス Toggle() メソッド
public static bool Toggle(Rect position, bool value, string text)
public static bool Toggle(Rect position, bool value, Texture image)
public static bool Toggle(Rect position, bool value, GUIContent content)
public static bool Toggle(Rect position, bool value, string text, GUIStyle style)
public static bool Toggle(Rect position, bool value, Texture image, GUIStyle style)
public static bool Toggle(Rect position, bool value, GUIContent content, GUIStyle style)

position パラメータにはトグルボタンの位置とサイズを指定します。value パラメータは描画するトグルボタンのチェック状態を表し、この値が true であればチェック状態、false であれば非チェック状態となります。

text パラメータは表示するテキストを、image パラメータは表示するテクスチャを、content パラメータには表示する内容を表す GUIContent オブジェクトを指定します。style パラメータには描画するトグルボタンの GUI スタイルを指定します。

Toggle() メソッドの戻り値はボタンのチェック状態です。ユーザーの操作によってトグルボタンのチェックが切り替わった場合は value パラメータで入力したチェック状態とは逆の(すなわち !value)結果が得られます。

コード1
using UnityEngine;

public class Test : MonoBehaviour 
{
	void OnGUI()
	{
		Rect rect1 = new Rect(10, 10, 400, 30);
		GUI.Toggle(rect1, true, "Stand by Ready!!");
		
		Rect rect2 = new Rect(10, 40, 400, 30);
		GUI.Toggle(rect2, false, "Get set!");
	}
}
実行結果
コード1 実行結果

コード1はチェック状態のトグルボタンと、非チェック状態のトグルボタンを描画します。戻り値は処理せず、チェック状態は常に固定しているため、ボタンを押してもチェック状態が入れ替わることはありません。

入力によってチェック状態を入れ替えるには Toggle() メソッドの戻り値を保存し、次のフレームのトグルボタンの描画に渡さなければなりません。通常は Toggle() ボタン用の bool フィールドなどを用意し、これをボタン表示に利用します。

コード2
using UnityEngine;

public class Test : MonoBehaviour 
{
	private bool isChecked = true;
	void OnGUI()
	{
		Rect rect1 = new Rect(10, 10, 400, 30);
		isChecked = GUI.Toggle(rect1, isChecked, "Are you sure that's enough armor?");
		
		Rect rect2 = new Rect(10, 40, 400, 30);
		if (isChecked) GUI.Label(rect2, "No problem. Everything's fine.");
		else GUI.Label(rect2, "I'll take the best you have.");
	}
}
実行結果
コード2 実行結果

コード2はトグルボタンのチェック状態に応じて表示するラベルを切り替えるプログラムです。トグルボタンには、常に bool 型の isChecked フィールドの値を渡し、戻り値を isChecked フィールドに代入することで最新のチェック状態を反映させています。