親オブジェクト(親要素)の有効/無効を調べる

Unityではシーンの構成として階層化していくことは至極当然のことですし、状況に応じて様々なオブジェクト(要素)のON/OFFを切り替えることもよく出てくるかと思います。

その際に、コンポーネントを何かのクラスにアタッチしていたり、後々使うから~といった理由からGetComponentsInChildren<~~~>(true)などで全取得していたときに、状況的には非アクティブなのにメソッドを呼んだりするとちょっと面倒くさいことが起きたりします。例えば、データの更新/保存とかしてたりね。

そこで、親オブジェクト(親要素)が有効/無効かどうかを調べる方法についてです。まぁ実際は、Unity標準で用意されている+1行で済むので知ってさえいれば何てことないですね。

ということで、ほいっとな。(child.activeInHierarchyのところです)

public class ActiveHierarchyCheck : MonoBehaviour {

    public GameObject child;

    // Use this for initialization
    void Start () {

        if (child.activeInHierarchy) Debug.Log("Enabled");
        else Debug.Log("Disabled");

    }   
}

一応、Unityで使える簡単なサンプルも用意してみました。