编辑器拓展
https://blog.csdn.net/zxl321365712/article/details/80080586
蛮牛上一个详细的博客
http://www.manew.com/thread-90330-1-1.html
siki关于编辑器拓展的视频教程(免费)
http://www.sikiedu.com/my/course/47
官方教程
API界面
https://docs.unity3d.com/ScriptReference/MenuItem.html
编辑器脚本都在Editor下,在打包时不会包含
编辑器特性位于unityEditor命名空间下
添加菜单按钮
[MenuItem("Tools/test")]//在菜单上显示命令
public static void Test()//点击该命令后可以执行这个方法,私有也可访问
{
Debug.Log("Test Function is work");
}
public MenuItem(string itemName, bool isValidateFunction, int priority);
-
itemName路径:每个/代表一级菜单
-
isValidateFunction是否为可用性检查,在后面介绍。
-
priority优先级,越小越靠上,当优先级相差大于10以上时会分组
-
路径重复时,后添加的菜单会覆盖先添加的。
-
系统内置的功能也会被覆盖。
-
Game Object中,优先级小于50(不包括)的会显示在hierarchy中。
-
component菜单下的内容必须继承monobehaviour,因此需要使用AddComponentMenu添加,其他使用方法相似
允许加空格,空格后可设置快捷键,不可重复,如"Tools/test4 _q"
特殊快捷键如下:
* _ – 无
* % – CTRL on Windows / CMD on OSX
* # – Shift
* & – Alt
* LEFT/RIGHT/UP/DOWN – Arrow keys
* F1…F12 – F keys
* HOME, END, PGUP, PGDN
给脚本,组件添加右键菜单:
路径用CONTEXT/[组件名]/[其他]
获取点击的组件:方法添加MenuCommand类参数,其中context字段即为我们右键打开菜单的那个物体(或者组件)。建议存成对应类型再使用,可以用强制转换,或者as。用as转换,失败时会返回空,而强制会报错。
static public void RigidbodyTools(MenuCommand cmd)
{
Rigidbody rigidbody = cmd.context as Rigidbody;
}