Version: Unity 6.0 (6000.0)
言語 : 日本語
Quality
# Tag と Layer

Script Execution Order

スクリプトの Script Execution Order 設定を使用して、Unity がさまざまな MonoBehaviour クラスのイベント関数を呼び出す相対的な順序を指定します。例えば、Unity が MoveForward MonoBehaviour スクリプトのイベント関数を実行する前に、Rotation MonoBehaviour スクリプトのイベント関数を実行するように指定できます。

この順序はイベント関数の各カテゴリに個別に適用されるため、Unity はフレーム内で呼び出す必要のあるすべての Awake 関数を指定された順序で呼び出し、後でアクティブなゲームオブジェクトの Update 関数を同じ順序で呼び出します。

スクリプトの実行順序は、Project Settings Inspector で調整できます。メニュー:__Edit__ > Project Settings を選択し、Script Execution Order カテゴリを選択します。

注意複数のスクリプトタイプを複数のゲームオブジェクトに割り当てる場合、スクリプトの実行順序は、どのゲームオブジェクトにアタッチされているかに関わらず、あるタイプのすべてのスクリプトが他のタイプのすべてのスクリプトよりも先に実行されるように指定します。

プラス (+) ボタンを使用して、設定のウィンドウでスクリプトを追加し、クラス名を選択します。スクリプトを削除するには、リストの各項目の右側にあるマイナス (-) ボタンを使用します。

実行順序を指定するには、リスト内の項目をドラッグして順序を変えるか、リスト内のクラスの順序の番号を編集します。割り当てられた番号は、相対的な順序を表しています。Unity はリストを上から下の順に (大きな負の順序番号のスクリプトから大きな正の順序番号のスクリプトに向かって) 実行します。Unity は、Default Time (デフォルトタイム) の間に、このリストにないスクリプトを実行します。これは、負の順序番号を持つスクリプトの後、正の順序番号を持つスクリプトの前に実行されます。

順序番号は任意であり、物理的な量を表すものではありません。エディターは、これらの値をスクリプトのメタデータファイルに保存します。リスト内の他のスクリプトを追加または移動するときに、余分なファイルの変更を回避するために、順序番号の間に間隔を残すことができます。

複数のシーンが 追加でロード されると、設定されたスクリプト実行順序が一度に 1 つのシーンに対してすべて適用されます。例えば、設定された実行順序が Script1 > Script2 > Script3 の場合、Unity は最初のシーンのすべての Script1 インスタンスを更新し、次に最初のシーンのすべての Script2 インスタンスを更新し、次に最初のシーンのすべての Script3 インスタンスを更新してから、次のシーンの更新を実行します。

スクリプトの実行順序をエディターで設定するのではなくコードから指定する場合は、MonoBehaviour から派生したクラスに [DefaultExecutionOrder] 属性を適用します。詳細については、スクリプティング API の DefaultExecutionOrder を参照してください。

注意Script Execution Order 設定ウィンドウで指定された実行順序は、RuntimeInitializeOnLoadMethod 属性でマークされた関数の順序には影響しません。ランタイム初期化の順序は指定できないからです。また、スクリプトの実行順序は、OnDisable および OnDestroy 関数には影響しません。

Unity がフレーム内のさまざまなカテゴリのイベント関数を呼び出すタイミングについては、イベント関数の実行順序 を参照してください。

MonoManager

Quality
# Tag と Layer