夜風のMixedReality

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

Unityプロジェクトウィンドウに追加したコマンドのレイアウトを変更する

本日は昨日に引き続きUnity枠です。

 昨日はプロジェクトウィンドウを拡張してGraphicsToolsStandardシェーダー適応済みのマテリアルを直接生成する実装を行いました。

redhologerbera.hatenablog.com

昨日の段階では追加したコマンドは一番下に表示されUI的によく使うコマンドとしては使いづらいです。

今回はこの表示レイアウトを変更します。

〇マテリアルを追加するプロジェクトウィンドウの拡張

昨日時点のコードは次のようになります。今回はこれをベースにレイアウトを変更します。

using UnityEngine;
using UnityEditor;
using System.IO;


/// <summary>
/// Create MRGTShaderMaterial
/// </summary>
public class CreateMRGTMaterial : MonoBehaviour
{
    [MenuItem("Assets/Create/Material(MRGT)")]
    private static void CreateMaterial()
    {
        var directory = AssetDatabase.GetAssetPath(Selection.activeObject);
        Material material = new Material(Shader.Find("Graphics Tools/Standard"));
        if (string.IsNullOrEmpty(directory))
        {
            directory = "Assets";
        }
        
var path = directory + "/" + "NewMRGTMaterial.mat";
var uniquePath = AssetDatabase.GenerateUniqueAssetPath(path);
AssetDatabase.CreateAsset(material, uniquePath);
AssetDatabase.SaveAssets();
Selection.activeObject = material;

    }
}

〇レイアウトの変更

コマンドの表示順を変えるためにはMenuItemアトリビュートで行います。

    [MenuItem("Assets/Create/Material(MRGT)")]
    private static void CreateMaterial()
    {
    ・・・

MenuItemアトリビュートは次のように記述することができます。

[MenuItem("コマンドの表示メニュー ショートカットキー"),priority]

docs.unity3d.com

今回の場合次のように喜寿するることでショートカットキーと優先度を定義できます。

    [MenuItem("Assets/Create/Material(MRGT) %M",priority = 1)]

これによってMaterial(MRGT)コマンドが上部に表示されるようになります。

priorityはマイナス値も使用することができ、今回の場合GraphicsToolsのコマンドが最優先(priority=0)となっているため-1を指定することで一番上部のコマンドに表示されます。

またコマンドの最後にスペースキーで区切ることでショートカットキーを指定することができます。

今回の場合はAssets/Create/Material(MRGT) %Mとすることで%がCtrlキー、MがMキーを意味しておりCtrlキー+Mキーをショートカットキーとしてコマンドのトリガーにすることができます。

本日は以上です。