Unityのボタンのenabled/setActive/interactableの違い
UnityのuGUIを作成したときに、条件に応じてスクリプトから選択出来なくしたり、消したりしたい時が出てくると思いますが、その際に使う関数について
今回確認するのは
- Button.enabled = true/false;
- Button.interactable = true/false;
- GameObject.setActive(true/false);
まずはuGUIからボタンを作成
ステータスを変更するスクリプトの作成
using UnityEngine; using System.Collections; using UnityEngine.UI; public class buttonStatus : MonoBehaviour { Button buttonA; Button buttonB; Button buttonC; GameObject buttonD; // Use this for initialization void Start () { buttonA = GameObject.Find ("Canvas/ButtonA").GetComponent<Button> (); buttonB = GameObject.Find ("Canvas/ButtonB").GetComponent<Button> (); buttonC = GameObject.Find ("Canvas/ButtonD").GetComponent<Button> (); buttonD = GameObject.Find ("Canvas/ButtonC"); } // Update is called once per frame void Update () { buttonB.enabled = false; buttonC.interactable = false; buttonD.SetActive (false); } }
結果
Buttonオブジェクトに対して
enabled
- true/falseを代入することでステータス変更
- falseにすると選択できなくなる
- 見た目は変わらない
- GameObjectには使えない
interactable
- true/falseを代入することでステータス変更
- falseにすると選択できなくなる
- disabledステータスになり、見た目もグレーがかった半透明になる
- GameObjectには使えない
GameObjectに対して
setActive
- true/falseを引数にとることでステータス変更
- falseにすると選択できなくなる
- 表示自体が消える
- ButtonObjectには使えない