Unity解説 指定したオブジェクトの表示・非表示切替
今回は、Unityで配置したImageやButtonなどのオブジェクトを非表示にする方法を説明します。


実際にどうやるか思いつかないもんね。
教えて~


では、非表示操作をするためのImage、Text(TMP)、ButtonをSceneに配置します。



それぞれを「TestImage」、「TestText」、「TestButton」に名前を変更します。



この名前変更は必須ではないのですが、ここで定めた名前で、非表示を操作するということを明確にしたい意図がありました。


まず「TestImage」を非表示にしてみましょう。コードは下のとおりです。


using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hihyouji001 : MonoBehaviour { GameObject TestImageObj; void Start() { TestImageObj = GameObject.Find("TestImage"); TestImageObj.SetActive(false); } }
それでは、このスクリプトを空のオブジェクトにアタッチして、ゲームを実行してみます。



ちゃんと指定したImageが消えてるね✨


ええ、それでは次に特定のキーボードを押したら、特定のオブジェクトを非表示にするようにしてみます。


using System.Collections; using System.Collections.Generic; using UnityEngine; public class Hihyouji002 : MonoBehaviour { GameObject TestImageObj; GameObject TestTextObj; GameObject TestButtonObj; void Start() { TestImageObj = GameObject.Find("TestImage"); TestTextObj = GameObject.Find("TestText"); TestButtonObj = GameObject.Find("TestButton"); } void Update() { if (Input.GetKeyDown(KeyCode.A)) { TestImageObj.SetActive(false); } if (Input.GetKeyDown(KeyCode.S)) { TestTextObj.SetActive(false); } if (Input.GetKeyDown(KeyCode.D)) { TestButtonObj.SetActive(false); } } }
これは、キーボードの「A」、「S」、「D」を押すと、それぞれ「Image」「Text」「Button」を非表示にするスクリプトです。


前のスクリプトを取り除いて、このスクリプトでゲームを実行してみましょう。



イイ感じに非表示にできてるね💨


それでは、今度は「A」を押した時に、オブジェクトが表示状態であった時は、非表示にして、非表示状態だったら表示するスクリプトです。


using System.Collections; using System.Collections.Generic; using UnityEngine; public class HyoujiOnOff001 : MonoBehaviour { GameObject TestImageObj; void Start() { TestImageObj = GameObject.Find("TestImage"); } void Update() { if (Input.GetKeyDown(KeyCode.A)) { if (TestImageObj.activeInHierarchy) { TestImageObj.SetActive(false); } else { TestImageObj.SetActive(true); } } } }

うん!
これでバッチリだね💨


お名前