LoginSignup
0
0

Unityでオブジェクトの表示/非表示を切り替える

Last updated at Posted at 2024-05-27

そもそもどこで表示と非表示が変わる?

オブジェクトを選択したときにInspectorが開きます。
その最上部にあるオブジェクト名の左側のチェックボックスで状態を変えることができます。

チェックがついているとき→表示/アクティブ状態
チェックがついていないとき→非表示/非アクティブ状態

となっています。

※非アクティブ状態だとそのオブジェクトにアタッチされているスクリプトのUpdate関数が止まったり、オブジェクトをFind関数で探せなくなるなど、いろいろな作用があります

スクリーンショット 2024-05-27 9.13.21.png

やりたいこと

  • スクリプトからオブジェクトの表示/非表示を切り替える
  • 現在オブジェクトがアクティブなのか、非アクティブなのか判定する

スクリプトからオブジェクトの表示/非表示を切り替える

スクリプト

今回は
①アクティブ状態のゲームオブジェクトを、ゲームスタートと同時に非アクティブに
②ボタンで関数を呼び出してオブジェクトを表示する
という想定でスクリプトを書きました。

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と書く
        }
    }

非アクティブの時
スクリーンショット 2024-05-27 9.37.07.png

アクティブの時
スクリーンショット 2024-05-27 9.37.19.png

最後に

よくボタンやif文と組み合わせて使っているので、今回はこのように紹介させていただきました。他の使い方を見つけたらまた記事を編集・更新していこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0