読者です 読者をやめる 読者になる 読者になる

Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

実行の順番:OnEnable, Awake, OnLevelWasLoaded, Start

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’に実行されるがその順番は不定である。