読者です 読者をやめる 読者になる 読者になる

万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

InitializeOnLoadとかInitializeOnLoadMethodとかRuntimeInitializeOnLoadMethod Unity

どうしてもEditorのOnEnabledが遅くて、普通のMonoBahaviorのAwake()より遅くて困った。

[InitializeOnLoad] //これをつけるとstaticなコストラクタを定義すると呼ばれる.
public class Test : Editor // 別にEditorの小クラスでなくても`InitializeOnLoad`は使える。
{
    static Test()
    {
        Debug.Log("Constructor");   
    }

    [InitializeOnLoadMethod]
    static void InitializeOnLoadMethod()
    {
        Debug.Log ("InitializeOnLoadMethod");
    }

    [RuntimeInitializeOnLoadMethod]
    {
        Debug.Log ("RuntimeInitializeOnLoadMethod");
    }
}

これで Constructor InitializeOnLoadMethod についてはAwakeより先に呼べた。