本日はUnityの小ネタ枠です。
Unityでオブジェクトやコンポーネントのアクティブ状態をチェックする方法です。
オブジェクトやコンポーネントのアクティブ状態をチェックする
MonoBehaviourからオブジェクトやコンポーネントのアクティブ状態をチェックするには以下のいくつかのプロパティが利用できます。
プロパティ名 | 説明 |
---|---|
activeInHierarchy | ヒエラルキーにおける自身のオブジェクトの有効無効状態を取得する |
activeSelf | 自身のオブジェクト自体の有効無効の切り替え状態を取得する |
isActiveAndEnabled | コンポーネントの動作の有効無効状態を取得する |
enabled | コンポーネント自体の有効無効の切り替え状態を取得する |
各プロパティの動作
以下のサンプルスクリプトを使って状況ごとの戻り値を確認してみます。
・ActiveTest.cs
using UnityEngine; public class ActiveTest : MonoBehaviour { private void Update() { // コンポーネントのチェックボックスを表示するためUpdate関数を記述 } [ContextMenu("ActiveCheck")] public void ActiveCheck() { // 様々なパターンのアクティブ状態を確認する // 1. 自身のゲームオブジェクトのアクティブ状態を確認する Debug.Log("自身のゲームオブジェクトのアクティブ状態: " + gameObject.activeInHierarchy); // 2. 自身のゲームオブジェクト自身のチェックボックスのアクティブ状態を確認する Debug.Log("自身のゲームオブジェクト自身のチェックボックスのアクティブ状態: " + gameObject.activeSelf); // 3. 自身のコンポーネントのアクティブ状態を確認する Debug.Log("自身のコンポーネントのアクティブ状態: " + this.isActiveAndEnabled); // 4. 自身のコンポーネント自身のチェックボックスのアクティブ状態を確認する Debug.Log("自身のコンポーネント自身のチェックボックスのアクティブ状態: " + this.enabled); } }
全てのチェックボックスが有効の場合
オブジェクトとコンポーネント全てが有効な場合は全てTrueが返ります。
プロパティ名 | 結果 |
---|---|
activeInHierarchy | True |
activeSelf | True |
isActiveAndEnabled | True |
enabled | True |
コンポーネントのチェックボックスが無効の場合
コンポーネントのみチェックを外した場合、コンポーネントの関連のisActiveAndEnabled,enabled両方でFalseが返ります。
プロパティ名 | 結果 |
---|---|
activeInHierarchy | True |
activeSelf | True |
isActiveAndEnabled | False |
enabled | False |