コガネブログ

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

【Unity】EditorApplication.ExecuteMenuItem で Unity エディタのメニューのショートカットを作成する

f:id:baba_s:20140731095315p:plain

Unity エディタではメニューから InputManager を開いて入力情報を設定したり
Tags & Layers を開いてタグやレイヤーを設定したり
PhysicsManager を開いて当たり判定を設定したりできますが

このあたりのメニューは普段から頻繁に使うわけではないので
久しぶりにタグを設定したり当たり判定を設定したりしようとすると
メニューのどこを選択して設定画面を開けばよかったのかを忘れがちです

そこで、EditorApplication.ExecuteMenuItem を使用すると
Unity エディタのメニューのコマンドをスクリプトから実行できるようになります

using UnityEditor;

/// <summary>
/// Unity エディタのメニューのコマンドを実行する関数を管理するクラス
/// </summary>
public static class Shortcut
{
    /// <summary>
    /// InputManager を Inspector ビューに表示します
    /// Alt + 1 キーでも実行できます
    /// </summary>
    [MenuItem( "Shortcut/Input &1" )]
    public static void OpenInputManager()
    {
        EditorApplication.ExecuteMenuItem( "Edit/Project Settings/Input" );
    }
    
    /// <summary>
    /// Tags & Layers を Inspector ビューに表示します
    /// Alt + 2 キーでも実行できます
    /// </summary>
    [MenuItem( "Shortcut/Tags and Layers &2" )]
    public static void OpenTagsAndLayers()
    {
        EditorApplication.ExecuteMenuItem( "Edit/Project Settings/Tags and Layers" );
    }
    
    /// <summary>
    /// PhysicsManager を Inspector ビューに表示します
    /// Alt + 3 キーでも実行できます
    /// </summary>
    [MenuItem( "Shortcut/Physics Manager &3" )]
    public static void OpenPhysicsManager()
    {
        EditorApplication.ExecuteMenuItem( "Edit/Project Settings/Physics" );
    }
}

例えば上記のスクリプトに適当な名前をつけて Unity プロジェクトの Editor フォルダに保存すると
下記のようなメニューが Unity エディタに追加されます

f:id:baba_s:20140731095535p:plain

Unity エディタのメニューのコマンドはすべて
EditorApplication.ExecuteMenuItem で呼び出すことが可能なので
上記のようなスクリプトでよく使うコマンドを呼び出すメニューを作ると
ゲーム開発中の煩わしさ少しだけ軽減できるのでオススメです