本日は昨日に引き続き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キーをショートカットキーとしてコマンドのトリガーにすることができます。
本日は以上です。