プログラミングで世界を変える

ゲームプログラミングと技術のこと

UnityのExecutionOrderは継承元に依存するのか調べてみた

まずこんな抽象クラスを用意し、メニュー: Edit > Project Settings > Script Execution Orderより最優先に実行するように設定。

using UnityEngine;

public abstract class AbstructPriorityUpdate : MonoBehaviour 
{
    void Update () {
        PriorityUpdate ();
    }

    public abstract void PriorityUpdate();
}

これを継承したtest1クラスでPriorityUpdate()を呼び出した場合と、MonoBehaviourを継承したtest2クラスでUpdate()を呼び出した場合で実行順を比較してみました。

結果

この実行順を設定した場合、
test1 → test2 の順で呼び出され、
f:id:splas_boomerang:20150723130035p:plain

この実行順を設定した場合、
test2 → test1 の順で呼び出されました。
f:id:splas_boomerang:20150723130039p:plain

ということは、ExecutionOrderは継承元には依存しないようです。

継承するだけで優先的に実行されるUpdate()を実現しようと思ったのですが、ダメだったので覚え書きとして残しておきます。

参考

docs.unity3d.com

docs.unity3d.com