はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】GameObjectがアクティブ(表示・非表示)かどうかを調べる

はじめに

今回はGameObjectがアクティブかどうかを調べることについての記事になります!

f:id:hanaaaaaachiru:20190421222032p:plain
f:id:hanaaaaaachiru:20190421222103p:plain

GameObjectがactiveかどうかを調べるには、GameObject.activeSelfGameObject.activeInHierarchyの2種類があります。

結果

最初にどんな違いがあるかを言ってしまうと、

activeSelfはゲームオブジェクトがアクティブかどうかを調べてtrue/falseを返す

activeInHierarchyは親のアクティブも含めて実際に表示されているかどうかを調べてtrue/falseを返す

という違いがあります。

実際のコードとどんな結果になるかを見てみましょう。

検証用のコード

using UnityEngine;

public class Hoge : MonoBehaviour
{
    [SerializeField] private GameObject targetGameObject;

    private void Start()
    {
        Debug.Log("activeSelf: " + targetGameObject.activeSelf);
        Debug.Log("activeInHierarchy: " + targetGameObject.activeInHierarchy);
    }
}

このコードを利用していろんなアクティブの状態を試してみたいと思います。

f:id:hanaaaaaachiru:20190421234712p:plain

検証結果

親のactive 子のactive activeSelf activeInHierarchy
× × ×
× ×
× × × ×

子オブジェクトを対象としてactiveSelfactiveInHierarchyをしていることに注意してください。

さいごに

これでGameObjectがアクティブかどうか調べる2種類のプロパティについて分かったのではないでしょうか。
是非うまく活用してみてください!