dasukoのブログ

現役エンジニアのブログです。

【Unity】MenuItemでショーカットキーを設定する

はじめに

UnityにはMenuItemというメインメニューとインスペクターのコンテキストメニューにメニューアイテムを追加することができるAttributeがあります。

MenuItemの公式のドキュメントはこちら

UnityEditor.MenuItem - Unity スクリプトリファレンス

MenuItemの基本的な使い方

以下のようにMenuItemというAttributeを特定のメソッドに追加することにより、メインメニューやコンテキストメニューにメニューアイテムを追加できます。

    [MenuItem("CustomMenu/Do Something")]
    static void DoSomething()
    {
        Debug.Log("Do Something.");
    }

こんな感じでメニューに追加されます。

f:id:dasuko:20201030012901p:plain

これを実行すると、意図した通りにコンソールにログが出力されます。

f:id:dasuko:20201030012823p:plain

ホットキーを定義する

MenuItemは、ホットキー(ショートカットキー)を作成することもできます。

以下のような特殊文字を使用するかどうかで表記方法が異なります。

コマンド 特殊文字
cmd %
shift #
alt(option) &

特殊文字を使用する場合

上記の特殊文字を使用する場合は、以下のようにコマンド名の最後にスペースを入れ、その後にショートカットキーを指定します。

(Do SomethingなのでCommand + dにしてみました)

    [MenuItem("CustomMenu/Do Something %d")]
    static void DoSomething()
    {
        Debug.Log("Do Something.");
    }

メニューにもショートカットーキーが表示されます。

f:id:dasuko:20201030171154p:plain

Command + shift + option + dの場合はこんな感じ

f:id:dasuko:20201030171303p:plain

これらのコマンドを打つことで、特定の処理を実行することができます!

特殊文字を使用しない場合

特殊文字を使用しない場合は、コマンド名の最後にスペースを入れ、その後に_ + ショートカットキーを指定します。

    [MenuItem("CustomMenu/Do Something _d")]
    static void DoSomething()
    {
        Debug.Log("Do Something.");
    }

f:id:dasuko:20201030171701p:plain

最後に

MenuItemでメニューを拡張できる上にショートカットを指定できるのは便利ですね。

今回、特殊文字を使用しない例として、dを指定しましたが、

誤って処理を実行してしまう可能性もあるので、cmd + dとかにするのがいいかなと思います。

参考

UnityEditor.MenuItem - Unity スクリプトリファレンス