##0.0 はじめに
Awake() OnEnable() Start()が実行される順番を調べてみた。
##1.0 呼び出される順番
Awake() → OnEnable() → Start()
##1.1 Awake()
シーンが始まるとすぐに呼び出されます(スクリプトのインスタンスがロードされたとき)。なのでStartより先に呼ばれます。参照先のAwakeの処理が終わってない可能性がある為、参照からの値の取得は注意が必要です。オブジェクトが有効でないと呼ばれません。また1回だけしか呼び出されません。
##1.2 Start()
最初のフレームにて呼び出される。Updateの1フレーム前で呼ばれます。
オブジェクトが有効でないと呼ばれません。また1回だけしか呼び出されません。
##1.3 OnEnable()
名前の通りブジェクトがSetActive(true)などで有効(アクティブ)になったときに呼び出されます。
他とことなり何回でも呼ばれます。(もう一度オブジェクトがアクティブになったときにも呼ばれます)
Awakeより後、Startより先に呼ばれます。
ちなみに非アクティブになった時に呼ばれる関数はOnDisable()です。こちらはゲームスタート時(最初に再生した時)に非アクティブでも呼ばれないので注意が必要です。