UnityEditor の起動時にのみ処理を走らせたいと思い、処理を探していると公式の記事が見つかりました
がこちらの記事は「起動時エディタースクリプト実行」とありますが、起動時以外にも
コンパイルが走り終わったタイミングでも呼ばれてしまいます
そのため、公式の処理をベースに ScriptableSingleton を利用して
初回に呼ばれたときのみ処理を行うようにしてみました
探していると EditorApplication.timeSinceStartup
を利用している記事もありましたが
UnityProject の規模やPCのスペックによって起動時間は安定しないため、上記を利用するのはおすすめできません
using UnityEngine; using UnityEditor; [InitializeOnLoad] public static class Startup { private class StartUpData : ScriptableSingleton<StartUpData> { [SerializeField] private int _callCount; public bool IsStartUp() { return _callCount++ == 0; } } static Startup() { if (!StartUpData.instance.IsStartUp()) return; // UnityEditorの起動時に行いたい処理を記述する } }