うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】MenuItem の表示方法まとめ

各所で右クリックメニューに表示するためのまとめ

Hierarchy Window

GameObject/ から始まるパスを記述する

但し、priority を指定しない場合表示されないことがある

[MenuItem("GameObject/Test")
private static void Menu()
{
}

f:id:hacchi_man:20201220155939p:plain:h300

そのため、priority をなるべく小さい値にして指定してやる必要がある

[MenuItem("GameObject/Test", false, int.MinValue)]
private static void MenuTest()
{
}

Project Window

Assets/ から始まるパスを記述する

[MenuItem("Assets/Test")
private static void Menu()
{
}

f:id:hacchi_man:20201220160214p:plain:h300

AddComponentMenu

Component/ から始まるパスを記述する

[MenuItem("Component/Test")]
private static void MenuTest()
{
    // 現在のオブジェクトを取得するにはこれ?
    Selection.activeGameObject;
}

f:id:hacchi_man:20201220162740p:plain:h300

Component Menu

CONTEXT/ から始まるパスを記述する

CONTEXT/Component/ とすると全コンポーネント
CONTEXT/{ComponentName}/ とすると指定したコンポーネントでのみ表示される

f:id:hacchi_man:20201220163358p:plain

[MenuItem("CONTEXT/Component/Test")]
private static void MenuTest()
{
}

// MeshFilterにのみ表示
[MenuItem("CONTEXT/MeshFilter/Test2")]
private static void MenuTest2()
{
}

f:id:hacchi_man:20201220163657p:plain