Unity スクリプトの実行順番をコントロールする方法


0.0 はじめに

Unityでは異なるスクリプト間でのAwake/Startメッソドの実行順序は原則不規則です。この順番を制御する方法があります。
下記のどちらかで制御が可能です。

1.0 [DefaultExecutionOrder()]属性をつかう

下のように[DefaultExecutionOrder()]属性をクラス(スクリプト)につけます。()内に数字をいれます。小さな数字から実行されます。0がデフォルトなので先に実行させるためにマイナスの数字をいれると良いでしょう。

Test.cs
[DefaultExecutionOrder(-5)]
public class Test : MonoBehaviour{

}

2.0 Script Execution Orderをつかう

メニューで Edit --> Project Settings(Unity2018.4)を選びます。
『Script Execution Order』を選択します。
ウィンドウでの設定はシンプルで、[+]を押してスクリプトを追加し、スクリプトを実行したい順に並べるだけです。数字が小さなものから(上から順に)実行されます。全てのスクリプトを指定する必要はありません。