Unityのスクリプト内で初期化を行う関数はいくつかある。
ひとつのスクリプトの中で実行される順番は次の通りらしい。(出典はこれ)
Awake
OnEnable
OnLevelWasLoaded
Start
しかし、スクリプトを無効にした場合(Script.enabled=false)は、次の通り
Awake
OnLevelWasLoaded
すなわち、OnEnable, Startは実行されない
Awake, Startはひとつのオブジェクトについて、一度しか呼ばれない。
しかし、OnEnableは、Enableされるたびに呼ばれる、というのも違い。
また、異なるスクリプトどのAwake(あるいはOnEnable、Start)が先に呼ばれるかはデフォルトでは不定。
明示的にどのスクリプトを先に実行するかを指定するには、Edit>Project Settings...>Script Execution Order Settings で行う。
'Default Time'より先に実行したいスクリプトを上に、後に実行したいものを下に置く。上ほど先に実行される。
指定したスクリプト以外は'DefaultTime’に実行されるがその順番は不定である。