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; |
效果如下:
点击后对选中的游戏对象添加对应脚本:
