FC2ブログ
    05 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.» 07

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】スクリプトの実行順の制御 

    こんにちは。
    大坂です。

    Unityでスクリプト間のAwake、Startの実行順を制御する方法です。
    Awake、Startの実行順を気にしない作りにする方がいい気もしますが、方法があるのでご紹介。

    使うのは「DefaultExecutionOrder」属性ですね。
    とりあえず何も指定しないで実行してみます。

    Test_1.cs

    public class Test_1 : MonoBehaviour
    {

    private void Awake() {
    Debug.Log("Test_1 Awake");
    }

    private void Start() {
    Debug.Log("Test_1 Start");
    }
    }

    Test_2.cs

    public class Test_2 : MonoBehaviour
    {

    private void Awake() {
    Debug.Log("Test_2 Awake");
    }

    private void Start() {
    Debug.Log("Test_2 Start");
    }
    }

    実行結果。


    Test_2の方が先に実行されてますね。
    (オブジェクトに後にアタッチしたスクリプトが先に実行されるようですが、いっぱいあるとそんなの気にしてられませんね・・・。)

    Test_1に[DefaultExecutionOrder(-1)]を設定して先に実行されるようにしてみます。
    属性を設定しないと「0」で、値が小さい方が先に実行されるので「-1」を設定します。

    Test_1.cs

    [DefaultExecutionOrder(-1)]
    public class Test_1 : MonoBehaviour
    {

    private void Awake() {
    Debug.Log("Test_1 Awake");
    }

    private void Start() {
    Debug.Log("Test_1 Start");
    }
    }

    実行結果。


    ちゃんとTest_1が先に実行されてますね。
    他にも実行順を制御するのに[Editor]-[ProjectSettings]-[Script Execution Order]を使う方法もありますね。
    前に書いてました・・・

    では今週もこれにてノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/826-abd81411
    この記事にトラックバックする(FC2ブログユーザー)