Unity编辑器扩展(一)编辑器扩展基础

一、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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值