はじめに
今回は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種類のプロパティについて分かったのではないでしょうか。
是非うまく活用してみてください!