MRが楽しい

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

Unityでエディターの更新(Update)時処理を実装する

本日は Unity の小ネタ枠です。
Unityでエディターの更新(Update)時処理をスクリプトで実装する方法についてです。

エディターの更新(Update)時処理をスクリプトで実装する

エディターの更新(Update)時処理をスクリプトで定義するには EditorApplication.update のデリゲートを利用します。
docs.unity3d.com

EditorApplication.update への登録には InitializeOnLoad 属性を利用するとエディター起動時に自動で登録が行われるようになり便利です。
docs.unity3d.com

サンプルスクリプト

以下のサンプルスクリプトを作成しました。エディター再生の一時停止を監視し、一時停止を利用できなくします。
エディター起動またはスクリプトコンパイル直後に EditorApplication.update に処理が登録されます。
・EditorUpdateTest.cs

using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;

// InitializeOnLoadをつけるとUnityEditorが起動したとき、または
// スクリプトがコンパイルされた直後に静的コンストラクタが自動的に実行されます
[InitializeOnLoad]
public class EditorUpdateTest
{
    static EditorUpdateTest()
    {
        EditorApplication.update += Update;
    }
    
    private static void Update()
    {
        // エディターが一時停止しないようにする
        if (UnityEditor.EditorApplication.isPaused)
        {
            Debug.Log("Check EditorApplication.isPaused");
            UnityEditor.EditorApplication.isPaused = false;
        }
    }
}
#endif

動作確認

スクリプトを作成してコンパイルが走ると、一時停止ボタンを押してもすぐに無効化されるようになりました。