一、菜單欄菜單this
[MenuItem("菜單名稱")] public static void Method(){}// 須要執行的調用方法
二、能夠在資源窗口右鍵顯示spa
MenuItem("Assets/菜單名稱", false, 61)]
三、能夠在Project窗口對象右鍵菜單調用,又能夠在Hierarchy窗口對象右鍵菜單調用.net
MenuItem("GameObject/Create Other/菜單名稱")
四、既能夠在資源窗口右鍵調用,又能夠在Hierarchy窗口的對象上右鍵調用3d
[MenuItem("GameObject/Create Other/菜單名稱"), MenuItem("Assets/菜單名稱", false, 61)]
五、組件菜單,能夠爲選中對象添加組件code
[AddComponentMenu("組件菜單名稱", 9)] public class ComExtension : Component{}
如下內容爲轉載:對象
做者:勥小透明 來源:CSDN 原文:https://blog.csdn.net/WPAPA/article/details/51066397?utm_source=copyblog
六、MenuItem菜單的前後排序:排序
雖然咱們在寫代碼的時候是 item2 在前,可是咱們在設置順序時給它設的是2,因此最後顯示的時候,則是1在前,2在後遊戲
[MenuItem("MenuItem/MenuItem2", false, 2)] private static void MenuItemFunc2() { Debug.Log("MenuItemFunc2"); } [MenuItem("MenuItem/MenuItem1", false, 1)] private static void MenuItemFunc1() { Debug.Log("MenuItemFunc1"); }
七、MenuItem與快捷鍵進行關聯:
[MenuItem("MenuItem/快捷鍵1 _%#&_HOME")] private static void MenuItemFunc3() { Debug.Log("MenuItemFunc3"); } [MenuItem("MenuItem/快捷鍵2 _%#&_LEFT")] private static void MenuItemFunc4() { Debug.Log("MenuItemFunc4"); }
如圖所示,這2個item選項跟快捷鍵關聯起來了,能夠直接使用快捷鍵來調用。
規則是:
% = ctrl
# = Shift
& = Alt
LEFT/RIGHT/UP/DOWN = 上下左右
F1…F2 = F...
HOME, END, PGUP, PGDN = 鍵盤上的特殊功能鍵
特別注意的是,若是是鍵盤上的普通按鍵,好比a~z
,則要寫成_a ~ _z
這種帶_前綴的。
八、選中的不是指定類型的對象,菜單項會被禁掉:
[MenuItem("MenuItem/Selected GameObject")] private static void SelectedGameObject() { Debug.Log("SelectedGameObject"); } [MenuItem("MenuItem/Selected GameObject", true)] private static bool CheckObjectType() { Object selectedObject = Selection.activeObject; if(selectedObject != null && selectedObject.GetType() == typeof(GameObject)) { return true; } return false; }
這段的意思就是,若是你沒有選中任何遊戲對象,或者你選中的不是GameObject
類型的對象時,MenuItem/Selected GameObject
選項會是被禁用的(灰色)狀態,只有選的是指定類型的選項時,纔是正常的可點擊狀態。
九、能夠在 project 窗口裏右鍵到菜單:
[MenuItem("Assets/在Project目錄裏右鍵1")] private static void Assets_right_btn1() { Debug.Log("在Project目錄裏右鍵1"); }
咱們只須要把選項設置在Assets
目錄的子上,就能夠在Project
窗口裏右鍵出菜單了,固然也是能夠有例如 Assets/Create/XXX
這樣的目錄存在。
十、在 Inspector 窗口中的指定控件身上右鍵到選項:
[MenuItem("CONTEXT/Rigidbody/在Rigidbody上右鍵")] private static void CONTEXT_Rigidbody_right_btn() { Debug.Log("在Rigidbody上右鍵"); }
有時候,咱們想在某個控件上增長一些功能菜單,作一些好比自動給控件賦值等這種功能。
思路跟上面的實際上是同樣的,只不過咱們此次的父換成了CONTEXT
而已。
十一、經過在 GameObject/UI 選項夾裏增長選項,使菜單在Hierarchy窗口中被右鍵到:
[MenuItem("GameObject/UI/在GameObject目錄裏右鍵")] private static void GameObject_right_btn() { Debug.Log("在GameObject目錄裏右鍵"); }
思路跟前面同樣,咱們在 GameObject/UI/
目錄下增長了一個選項,咱們發現不止在 Hierarchy 窗口中看到了它,在頂部菜單欄相同的層次下也看到了它。
可是這裏有個問題就是,咱們並不可以像 GameObject/XXX
這樣,把選項放在 UI
的外面,這樣作的話,咱們只會在頂部欄的 GameObject
目錄下發現那個XXX
的選項,在 Hierarchy 什麼也不會有,這點須要你們注意。
補充:還有一種在Hierarchy
窗口設置菜單的方法,就是用編輯器的EditorUtility
類。
十二、ContextMenu的使用十分的簡單,總共就只有2點
注意:ContextMenu
這個類建立的選項,都是基於當前它所在的集成自MonoBehaviour
的組件類的,不像 MenuItem
幾乎是一個全局存在的選項
① 是咱們在小齒輪點開的菜單上,增長一個選項
② 是咱們爲testName
這個public
的變量單獨增長了一個右鍵選項
using UnityEngine; using System.Collections; public class TestMain : MonoBehaviour { // Use this for initialization void Start() { } // Update is called once per frame void Update() { } [ContextMenu("ContextMenu1")] public void ContextMenuFunc1() { Debug.Log("ContextMenu1"); } public int a = 0; public string b = ""; [ContextMenuItem("add testName", "ContextMenuFunc2")] public string testName = ""; private void ContextMenuFunc2() { testName = "testName"; } }
代碼部分十分的簡單,不過有一點須要注意的地方,那就是第2個咱們給變量testName
加菜單的時候,必定要把[ContextMenuItem]
寫在testName
上,而不是方法private void ContextMenuFunc2()
上面,方法的調用靠在ContextMenuItem
上設置參數來完成。