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


GameObjectがactiveかどうかを調べるには、GameObject.activeSelfとGameObject.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); } }
このコードを利用していろんなアクティブの状態を試してみたいと思います。

検証結果
| 親のactive | 子のactive | activeSelf | activeInHierarchy |
|---|---|---|---|
| 〇 | 〇 | 〇 | 〇 |
| 〇 | × | × | × |
| × | 〇 | 〇 | × |
| × | × | × | × |
子オブジェクトを対象としてactiveSelfやactiveInHierarchyをしていることに注意してください。
さいごに
これでGameObjectがアクティブかどうか調べる2種類のプロパティについて分かったのではないでしょうか。
是非うまく活用してみてください!