そもそもどこで表示と非表示が変わる?
オブジェクトを選択したときにInspectorが開きます。
その最上部にあるオブジェクト名の左側のチェックボックスで状態を変えることができます。
チェックがついているとき→表示/アクティブ状態
チェックがついていないとき→非表示/非アクティブ状態
となっています。
※非アクティブ状態だとそのオブジェクトにアタッチされているスクリプトのUpdate関数が止まったり、オブジェクトをFind関数で探せなくなるなど、いろいろな作用があります
やりたいこと
- スクリプトからオブジェクトの表示/非表示を切り替える
- 現在オブジェクトがアクティブなのか、非アクティブなのか判定する
スクリプトからオブジェクトの表示/非表示を切り替える
スクリプト
今回は
①アクティブ状態のゲームオブジェクトを、ゲームスタートと同時に非アクティブに
②ボタンで関数を呼び出してオブジェクトを表示する
という想定でスクリプトを書きました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SetActive : MonoBehaviour
{
public GameObject _testPanel;
void Start()
{
_testPanel.SetActive(false); //オブジェクトを非表示にする
}
public void ObjDisplay()
{
_testPanel.SetActive(true); //オブジェクトを表示する
}
}
たった1行で実装可能です。
大切なのは.SetActive(true/false);
の部分。
trueでアクティブにする、falseで非アクティブにすることができます。
現在オブジェクトがアクティブなのか、非アクティブなのか判定する
.activeSelf
を使うと判定できます。
結果はbool型(true/false)で返ってきます。
スクリプト
public void ObjVisibility(){
if (_testPanel.activeSelf){
Debug.Log("YES"); //アクティブならコンソールにYESと書く
}
else {
Debug.Log("NO"); //アクティブならコンソールにNOと書く
}
}
最後に
よくボタンやif文と組み合わせて使っているので、今回はこのように紹介させていただきました。他の使い方を見つけたらまた記事を編集・更新していこうと思います。