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

昨日の段階では追加したコマンドは一番下に表示され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]
今回の場合次のように喜寿するることでショートカットキーと優先度を定義できます。
[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キーをショートカットキーとしてコマンドのトリガーにすることができます。
本日は以上です。