UnityのEditor拡張メモ

Editor拡張の話です。

EditorApplication.playModeStateChanged

EditorApplication.playModeStateChangedという関数があります。こちらは、PlayモードとEditorモードの2つのモードの切り替え時に呼び出されます。 PlayModeStateChangeという型の引数が渡され、この引数を参照してそれぞれの処理を実装します。

実装例

static TestScriptEditor()
{
    EditorApplication.playModeStateChanged += OnChanged;
}

private static void OnChanged(PlayModeStateChange state)
{
    switch (state)
    {
        case PlayModeStateChange.EnteredEditMode:
            Debug.Log("Entered Edit Mode");
            break;
        case PlayModeStateChange.ExitingEditMode:
            Debug.Log("Exiting Edit Mode");
            break;
        case PlayModeStateChange.EnteredPlayMode:
            Debug.Log("Entered Play Mode");
            break;
        case PlayModeStateChange.ExitingPlayMode:
            Debug.Log("Exiting Play Mode");
            break;
    }
}

Selection.selectionChanged

Selection.selectionChangedは、エディタ内で選択が変更されたときに発生します。 エディタ内でゲームオブジェクトやアセットなどの選択が変わると、このイベントが発生します。

実装例

static TestScriptEditor()
{
     Selection.selectionChanged += OnSelectionChanged;
}

private static void OnSelectionChanged()
{
    Debug.Log("Selection Changed");
}

UnityEditor.Callbacks.DidReloadScripts

UnityEditor.Callbacks.DidReloadScripts属性が付けられている関数は、スクリプトがリロードされたときに呼び出されます。 スクリプトがリロードされるのは、主に新しいスクリプトが作成されたとき、既存のスクリプトが変更されたとき、またはUnityエディタが再起動されたときです。

実装例

[UnityEditor.Callbacks.DidReloadScripts]
private static void OnScriptsReloaded()
{
}