コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 5.0 新機能「RuntimeInitializeOnLoadMethodAttribute」

Unity 5.0 から「RuntimeInitializeOnLoadMethodAttribute」が追加されました
この属性をstatic関数に適用することでゲーム起動時にその関数が呼び出されます

using UnityEngine;

public class ExampleClass
{
    [RuntimeInitializeOnLoadMethod]
    private static void OnRuntimeMethodLoad()
    {
        Debug.Log( "ゲームを開始しました" );
    }
}

f:id:baba_s:20150610170047p:plain

定義してある関数にRuntimeInitializeOnLoadMethodAttributeを適用するだけで
自動で呼び出されるので、MonoBehaviourを継承したクラスで関数を定義して
ゲームオブジェクトにアタッチしておく必要はありません

また、Awake関数などと比較した実行順は下記のとおりです

  1. Awake
  2. OnEnable
  3. RuntimeInitializeOnLoadMethodAttribute
  4. Start
using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    private void Awake()
    {
        Debug.Log( "Awake" );
    }

    private void OnEnable()
    {
        Debug.Log( "OnEnable" );
    }

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

    [RuntimeInitializeOnLoadMethod]
    private static void OnRuntimeMethodLoad()
    {
        Debug.Log( "RuntimeInitializeOnLoadMethod" );
    }
}

f:id:baba_s:20150610170113p:plain

参考サイト様