夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRGTのスクリーンショット機能にショートカットキーを追加する その② ショートカット属性を使用してショートカットを行う

本日はMRGT調査枠です。

現在MRGTのスクリーンショット機能にショートカットキーを追加することを目的にイシューを立て作業をしています。

今回はショートカット属性を利用してUnityのショートカットを実装していきます。

〇ShortcutAttribute

今回MRGTのプロジェクトリーダーのCameronさんと情報を出し合いながら実装を行っています。

 今回キャメロンさんにMRTKのほかのパッケージでのショートカットキーの実装について聞いてみたところ今回触るShortcutAttributeを紹介していただきました。

I reached out to the rest of the MRTK team and we don't have an established pattern yet. But, using the shortcut manager seems like the ideal and recommended path forward. This attribute might be helpful too?

ShortcutAttributeUnityEditor.ShortcutManagementのネームスペースで定義されている機能です。

Attributeの名前の通り、関数の追加機能を使用するもので、[Shortcut("(ShortcutManagerでの場所)",ショートカットキー1,ショートカットキー2)]のように定義することでEditor上で指定したキーを押すとショートカットが機能します。

using UnityEditor.ShortcutManagement;
using UnityEngine;

public static class shortcutTest 
{
    [Shortcut("ShortCutTest/ShortCutTest", KeyCode.V, ShortcutModifiers.Shift]
    private static void ShortCutTest()
    {
        Debug.Log("OK!");
    }
}

上記のスクリプトをEditorフォルダに配置して、Unity上で[Shift]キー+[V]キーを押すことでログが出力されるようになりました。

ShortCutManagerを見てみるとShift+Vキーとして登録されていることが確認できます。

以上でショートカット属性を追加してショートカットキーをShortcutManagerに自動的に追加することができました。

 以上で大体実装するうえでの情報を集めることができたため次回以降で実際にMRGTのスクリーンショット機能のショートカットキーの実装へ移っていきます。