UEDL1——自定义菜单栏拓展
UEDL1——自定义菜单栏拓展
本章代码关键字
1 | [//为菜单栏、Hierarchy窗口(GameObject页签内)、Project窗口(Assets页签内)、以及某个脚本的右键菜单添加页签 ] |
特殊文件夹Editor
我们之前在学习Unity相关知识点时学习过,Editor文件夹是Unity中的特殊文件夹,
所有Unity中编辑器相关的脚本都需要放置在其中
我们在本套课程学习中,会频繁的使用到UnityEditor等命名空间,
这些使用了Unity编辑器相关命名空间的脚本最终是不能被打包出去的
我们需要把这些脚本放置到Editor文件夹中,避免打包时报错
Unity添加自定义页签
以前记录过该知识点:[MenuItem()],这里重新记录并扩充,无需再看旧记录
该特性可以为菜单栏、Hierarchy窗口(GameObject页签内)、Project窗口(Assets页签内)、以及某个脚本的右键菜单添加选项
在Unity菜单栏中添加自定义页签
命名空间:UnityEditor
特性:[MenuItem()]
用法:在静态函数前加上[MenuItem("页签/一级选项/二级选项/....")]
特性参数的格式:"菜单栏入口名/选项名/二级选项名/..."
,至少要有一个斜杠,否则报错!
作用:当在菜单栏点击该页签时,将执行静态函数中的逻辑
注意!该特性使用规则:
- 规则一:一定是静态方法
- 规则二:这个菜单栏按钮,必须有至少一个斜杠,不然会报错,斜杠必须是
/
,它不支持只有一个菜单栏入口 - 规则三:这个特性可以用在任意的类当中,不用在意继承对象
1 | [ ] |
效果如下:
点击后输出:
[MenuItem()]
的具体参数
[MenuItem()]
共有三个参数,分别如下:
- 路径:
string
类型。用'/'
来分割路径 - 是否是验证函数:
bool
类型,默认为false
,如果是验证函数,则本函数需要返回bool值,返回结果将决定该选项是否可用 - 函数优先级:影响在面板上的出现顺序,默认为1000
关于参数二的验证函数:
第二个函数就是验证函数,其返回的bool
值将决定第一个方法出现的选项是否可以点击,如果不能选择,那么第一个函数也将无法执行
1 | [ ] |
在Hierarchy窗口中添加自定义页签
命名空间:UnityEditor
特性:[MenuItem("GameObject/...")]
用法:在静态函数前加上,并且页签命名放入GameObject路径,即:[MenuItem("GameObject/页签/一级选项/二级选项/....")]
注意:
- 不用在意继承对象
- 斜杠必须是
'/'
- 在菜单栏的GameObject中也会出现对应选项
1 | [ ] |
效果如下:
点击后输出:
在Project窗口中添加自定义页签
命名空间:UnityEditor
特性:[MenuItem("Assets/...")]
用法:在静态函数前加上,并且页签命名放入Assets路径,即[MenuItem("Assets/页签/一级选项/二级选项/....")]
注意:
- 不用在意继承对象
- 斜杠必须是
'/'
- 在菜单栏的Assets中也会出现对应选项
1 | [ ] |
效果如下:
点击后输出:
在Inspector为脚本右键添加菜单
命名空间:UnityEditor
特性:[MenuItem("CONTEXT/...")]
它可以为某个继承MonoBehaviour
的脚本的右键菜单里添加功能
用法:在静态函数前加上:[MenuItem("CONTEXT/脚本名/页签/一级选项/二级选项/....")]
注意:
- 不用在意继承对象
- 斜杠必须是
'/'
1 | [ ] |
效果如下:
点击后输出:
加入快捷键
对于[MenuItem()]
添加的页签,我们可以通过在页签参数后添加特定字符来添加快捷键,[AddComponentMenu()]
不可使用
单键:路径后 + 空格 + 下划线 + 想要的按键
,
例如,要添加F4快捷键,就需要添加 _F4
,因此:[MenuItem("Unity编辑器拓展/Lesson1/TestFun _F4")]
效果如下:
按下F4就会直接执行这里的选项
组合键:下划线_
替换为
-
%
表示ctrl -
#
表示shift -
&
表示alt
以上三个按键可以单独配合其他键使用,也可以一起使用
例如,要添加Ctrl+Shift+Alt+A快捷键,就需要添加 %#&A
,因此:[MenuItem("Unity编辑器拓展/Lesson1/TestFun %#&A")]
效果如下:
按下Ctrl+Shift+Alt+A就会直接执行这里的选项
其他支持的按键:
LEFT
、RIGHT
:类似于 #LEFT
是左shift之类的按键
UP
、DOWN
、F1..F12
、HOME
、END
、PGUP
、PGDN
在菜单栏的Component菜单添加脚本
命名空间:UnityEngine
特性:[AddComponentMenu()]
用法:在想要通过Component菜单添加的脚本前加上[AddComponentMenu("一级选项/二级选项/....")]
注意:
- 脚本需要继承
MonoBehaviour
对象 - 斜杠必须是
'/'
- 最后一级选项的名字可以和脚本名不一样,但是建议一致
- 该脚本属于
UnityEngine
命名空间,因此添加该特性的类是可以被打包出去的
1 | using UnityEngine; |
效果如下:
点击后对选中的游戏对象添加对应脚本: