MRが楽しい

MRやVRについて学習したことを書き残す

Unityでプロジェクトを開いた際にスクリプトを実行する

本日はUnityの小ネタ枠です。
Unityでプロジェクトを開いた際にスクリプトを実行する方法です。

プロジェクトを開いた際にスクリプトを実行する

プロジェクトを開いた際にスクリプトを実行したい場合、InitializeOnLoadAttributeまたはInitializeOnLoadMethodが利用可能です。
InitializeOnLoadAttribute属性はスクリプトが再コンパイルされるときに指定のクラスを初期化します。
これはUnityのロード時やスクリプトを変更したとき、シーンを再生したときなどに発生します。
docs.unity3d.com

using UnityEditor;
using UnityEngine;

// 再コンパイル時に本クラスが初期化されてコンストラクタが実行される
[InitializeOnLoadAttribute]
public class InitializeOnLoadAttributeTest
{
    static InitializeOnLoadAttributeTest()
    {
        Debug.Log("Execute InitializeOnLoadAttributeTest.Constructor");
    }
}

InitializeOnLoadMethod属性はスクリプトが再コンパイルされるときに指定のメソッドを実行します。
docs.unity3d.com

using UnityEditor;
using UnityEngine;

public class InitializeOnLoadMethodTest : MonoBehaviour
{
    // 再コンパイル時に本メソッドが実行される
    [InitializeOnLoadMethod]
    static void OnProjectLoadedInEditor()
    {
        Debug.Log("Execute InitializeOnLoadMethodTest.OnProjectLoadedInEditor");
    }
}

動作確認

上記の2つのサンプルスクリプトを作成したプロジェクトを用意しました。

本プロジェクトをUnity Hubから開くと以下の通り実行されました。

また前述の通り、厳密には実行タイミングはスクリプトが再コンパイルされるときなので、シーンを再生したときやスクリプトを変更したときにも実行されます。