はなちるのマイノート

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

【Unity】OnEnable・OnDisableって親が非アクティブになったときはどうなるの?

はじめに

今回はOnEnable・OnDisableって親が非アクティブになったときにどうなるかについて調べていきたいと思います。

一応説明すると、

  • OnEnable・・・コンポーネントがアクティブになった時に呼ばれる
  • OnDisable・・・コンポーネントが非アクティブになった時に呼ばれる

というものです。

ちなみにシーン起動時にアクティブならば、Awake -> OnEnable -> Startの順番で呼ばれるみたいでした。

自身のゲームオブジェクト・コンポーネントがアクティブ/非アクティブなら明らかですが、親の場合はどうなるのか疑問に思ったので調べてみました。

早速いきましょう。

結論

早く結論が知りたいという方むけに、先に書いちゃいます。

結果は

親オブジェクトがアクティブ・非アクティブになったときも子オブジェクトのOnEnableOnDisableは呼ばれる

となりました。

まあ予想通りといったら予想通りですね。

調べ方

もはや書くかどうかも迷いましたが、一応調べ方を残しておきます。

やり方は非常にシンプルで、子オブジェクトにこちらのスクリプトをアタッチしました。

using UnityEngine;

public class Test : MonoBehaviour
{
    private void OnEnable()
    {
        Debug.Log("Enable");
    }

    private void OnDisable()
    {
        Debug.Log("Disable");
    }
}

f:id:hanaaaaaachiru:20200107161337g:plain

さいごに

いつも使うときに不安だったので、これからは確信を持ってつかうことができそうです!

ではまた。