Unity Shortcut Managerで便利なショートカットをつくろう!


はじめに

この記事は「サムザップ #1 Advent Calendar 2020」の12月15日の記事です。
昨日の記事は@tomeitouさんの「未来の本番不具合を減らすための振り返りと分析」でした。

Unity 2019で「Shortcut Manager」という機能が追加されました。この機能はunity上でショートカットを設定できる機能です。

設定できるショートカットは、既存のメニューの機能やMenuItemです。
MenuItemとして実装をすれば、独自の機能もショートカットとして追加することができます。

今回はUnity Shortcut Managerを使って、ショートカットを設定する手順を紹介します。

既存の機能をショートカットに設定する

ショートカットの設定ウインドウを開く

以下の手順から設定ウインドウを開きます
Windows: Edit > Shortcuts
Mac: Unity > Shortcuts

赤色キー:すでにショートカットが割り当てられる
青色キー:他のキーとセットで入力するショートカットとして割り当てられている
黒色キー:まだショートカットが割り当てられていない
Category:メニューのどの操作に属しているか
Name : 操作名
Bindings : 割り当てられているショートカット

ショートカットを割り当てる

ボタンを生成するコマンドにショートカットを割り当てます
操作一覧からボタンを生成するコマンドを探します
Nameの欄をダブルクリックして、割り当てたいショートカットを入力します。今回はOption + bを割り当てました。

実際に使ってみます。

独自のメニューを作って、ショートカットに設定する

最後に独自の処理をショートカットとしてつかってみたいと思います。
まず、MenuItemとして、ショートカットとして使いたい処理を実装します。
今回はヒエラルキー上の選択されたGameObjectの順番を変更する処理を用意しました。

title
using System.Linq;
using UnityEditor;
using UnityEngine;
public class TestShortCut : MonoBehaviour
{
    [MenuItem( "Tools/GameObject Down" )]
    private static void Down()
    {
        var selectedGameObjects = Selection.gameObjects;
        foreach(var selectedGameObject in selectedGameObjects.Reverse())
        {
            selectedGameObject.transform.SetSiblingIndex(selectedGameObject.transform.GetSiblingIndex() + 1);
        }
    }

    [MenuItem( "Tools/GameObject Up" )]
    private static void Up()
    {
        var selectedGameObjects = Selection.gameObjects;
        foreach(var selectedGameObject in selectedGameObjects)
        {
            selectedGameObject.transform.SetSiblingIndex(selectedGameObject.transform.GetSiblingIndex() - 1);
        }
    }
} 

MenuItemを実装すると、Shortcut managerにも表示されます。

GameObject Down:選択されているゲームオブジェクトをヒエラルキーの順番を下にする
GameObject Up:選択されているゲームオブジェクトをヒエラルキーの順番を下にする
実際に使ってみます

まとめ

今回はUnity Shortcut Managerを使って、ショートカットを設定する方法を紹介しました。
普段、マウスを使ってよく行う操作をショートカットに設定すると、とても快適になります。もしよかったら、使ってみてください。最後まで読んでいただきありがとうございました。
明日のアドベントカレンダーの担当は@ichikawa_masahiroさんです。