一、MenuItem
MenuItem可以向主菜单和Inspector面板上下文菜单中添加菜单项。
它具有如下三个参数:
- itemName:菜单路径
- isValidateFunction:是否为校验函数
- priority:优先级
itemName
这个参数是必传的,它用于指定菜单的路径。注意使用「MenuItem」特性的方法都必须是静态方法。
[MenuItem("AdvancedEditor/01-MenuItem/Test")]
private static void Test()
{
Debug.Log("Test");
}
效果如下
我们可以在路径的结尾以类似于%_q
的形式定义菜单的快捷键
[MenuItem("AdvancedEditor/01-MenuItem/Test %_q")]
private static void Test()
{
Debug.Log("Test");
}
效果如下
常见的符号代表的快捷键如下
符号 | 按键 |
---|---|
% | Ctrl/Command |
# | Shift |
& | Alt |
_a、_b、…_z | A~Z |
LEFT、RIGHT、UP、DOWN | 方向键 |
F1、F2…F12 | F1~F12 |
在路径的开头添加CONTEXT
,表示这是Inspector面板上下文菜单中的菜单项。如果方法参数为MenuCommand
,则会传入当前组件
[MenuItem("CONTEXT/Rigidbody/Init")]
private static void RigidbodyInit(MenuCommand cmd)
{
var rigidbody = cmd.context as Rigidbody;
if (rigidbody != null)
Debug.Log(rigidbody.name);
}
效果如下
isValidateFunction
参数标记了当前函数是否是校验函数。比如下面这个例子,DeleteValid()
被标记为了校验函数,那么与其菜单路径相同的非校验函数DeleteSelectedItem()
,就只有在DeleteValid()
返回true时才能点击。
/// <summary>
/// 添加菜单栏按钮
/// </summary>