スクリプトの実行順はめちゃくちゃ不安定
サンプルプログラム
using UnityEngine;
public class TestA : MonoBehaviour
{
void Start()
{
Debug.Log("TestA");
}
}
using UnityEngine;
public class TestB : MonoBehaviour
{
void Start()
{
Debug.Log("TestB");
}
}
Unityでは、プログラムの実行順が、再起動するたびに変わってしまいます。
これは、ビルド後のゲームでも同じなので、プログラムによっては、バグの原因にもなります。
実行順の設定
メニューバーの、Edit→Project Settingsを開いて、メニューの一覧から、ScriptExcutionOrderを選択します。
あらかじめ、いくつかのスクリプトの実行順が設定されています。出来るだけ、この順番は変更しないようにしましょう。
実行順としては、上の方から実行されていきます。
真ん中の、DefaultTimeは、ここに登録されていないスクリプトが実行されます。
なので、優先的に実行したいスクリプトは、DefaultTimeの上に設定します。
スクリプトの設定方法は、右下の+マークを押すと、スクリプトの一覧が出てくるので、そこから選択することで、追加できます。スクリプトを直接ドラッグ&ドロップでも追加することが出来ます。
今回は、TestAスクリプトを先に実行したいので、TestAをDefaultTimeより上に設定しました。
そして、TestBをDefaultTimeより下に設定しました。
実行順が変わっていれば成功です!
お疲れさまでした!