「Unity3D」(9)自定義編輯器選單擴充套件總結
阿新 • • 發佈:2019-02-16
新增選單
[MenuItem("Tools/MyOption")]
private static void MyOption()
{
// 自定義選單Tools
}
[MenuItem("Tools/Sub/MyOption")]
private static void MyOption()
{
// 子選單
}
[MenuItem("Window/AAAOption")]
private static void MyOption()
{
// 新增系統選單(Window)的選單項
}
新增選單項的快捷鍵
- % 代表 Ctrl 或 CMD
- # 代表 Shift
- & 代表 Alt
- LEFT/RIGHT/UP/DOWN 代表方向鍵
- F1 … F2 代表功能鍵
- HOME, END, PGUP, PGDN 代表對應按鍵
- _[a-z] 代表A-Z字元
以上每項快捷鍵可以組合使用,字元單獨使用需要‘_’字首,組合使用不需要‘_’字首。快捷鍵衝突不會有提示,只會有一個被啟用。
[MenuItem("Tools/Option1 %#a")]
private static void MyOption1()
{
// CTRL + SHIFT + A
}
[MenuItem("Tools/Option2 %g")]
private static void MyOption2()
{
// CTRL + G
}
[MenuItem("Tools/Option3 _g")]
private static void MyOption3()
{
// G
}
新增右鍵上下文選單,使用內建指定路徑
- Assets/ 工程檢視右鍵選單
- Assets/Create/ 工程檢視右鍵Create選單
- CONTEXT/ComponentName/ 屬性面板對應元件的右鍵選單
[MenuItem("Assets/MyAssetControl")]
private static void MyAssetControl()
{
}
[MenuItem("Assets/Create/MyAssetControl" )]
private static void MyAssetControl()
{
}
[MenuItem("CONTEXT/Rigidbody2D/MyOption")]
private static void MyOption()
{
}
選單禁用控制
[MenuItem("Tools/Option1")]
private static void Option1()
{
}
[MenuItem("Tools/Option1", true)]
private static bool CheckOption1()
{
// 路徑相同,返回可用性
return false;
}
選單項的排序與分組
[MenuItem("Tools/Option1", false, 2)]
private static void Option1()
{
}
[MenuItem("Tools/Option2", false, 1)]
private static void Option2()
{
}
[MenuItem("Tools/Option3", false, 21)]
private static void Option3()
{
}
屬性面板元件的右鍵選單,獲取當前元件
[MenuItem("CONTEXT/Rigidbody2D/MyOption")]
private static void MyOption(MenuCommand menuCommand)
{
// 獲得當前元件物件
var body2D = menuCommand.context as Rigidbody2D;
}
自定義元件右鍵選單
- 需要繼承MonoBehaviour
- 不能是static的方法
[ContextMenu("MyMenu")]
private void MyMenu()
{
}
自定義元件屬性的右鍵選單
[ContextMenuItem("Set Name", "SetName")]
public string myName;
private void SetName()
{
}
自定義元件加入元件選單
[AddComponentMenu("MyComponent/Enemy")]
public class Enemy : MonoBehaviour
{
}
「擴充套件很簡單」