スポンサーリンク

【Unity】スクリプトの実行順を設定する方法

c#

Unity Version 2021.3.11f1(LTS)

スクリプトの実行順はめちゃくちゃ不安定

サンプルプログラム

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スクリプト先に実行したいので、TestADefaultTimeより上に設定しました。

そして、TestBDefaultTimeより下に設定しました。

実行順が変わっていれば成功です!

お疲れさまでした!

タイトルとURLをコピーしました