Unity-编辑器开发
自定义菜单栏扩展
特殊文件夹Editor
Editor文件夹是Unity中的特殊文件夹*,*所有Unity中编辑器相关的脚本都需要放置在其中。因为这些使用了Unity编辑器相关命名空间的脚本最终是不能被打包出去的,否则会报错
一般自定义菜单栏拓展都是使用的MenuItem特性,加载静态函数上面,一般该静态函数所在的类不需要继承MonoBehavior
在Unity菜单栏中添加自定义页签:
1 | [ ] |
在Hierarchy窗口中添加自定义页签:
只需要前面多加个GameObject
1 | [ ] |
在Project窗口中添加自定义页签:
前面多加Assets
1 | [ ] |
在Inspector为脚本右键添加菜单:
1 | [ ] |
加入快捷键:
- 单键:路径后 + 空格 + 下划线 + 想要的按键
- 组合键:%表示Ctrl #表示Shift &表示Alt
1 | [//快捷键Shift + R ] |
在菜单栏的Component菜单添加脚本:
还有一种在菜单栏的Component菜单添加脚本,因为这个菜单栏的选项都是可以添加到游戏对象上的组件,本质上就是继承了MonoBehavior的类,所以AddComponentMenu这个特性需要添加到继承了MonoBehaviour的类上面
1 | [ ] |
PS:AddComponentMenu这个特性不支持快捷键哦
自定义窗口
文档:https://docs.unity.cn/cn/2022.3/ScriptReference/EditorWindow.html
只需要创建一个继承了EditorWindow
的类,调用EditorWindow
的静态方法GetWindow()
获取实例,并调用实例的Show()
方法就可以创建并打开一个自定义的编辑器窗口了。
在OnGUI
方法中,编写绘制内容和处理逻辑即可
GetWindow
方法返回的是一个单例,如果需要重复创建使用CreateWindow
1 | public class Lesson2 : EditorWindow |
窗口类的生命周期函数:
OnEnable、OnGUI、OnDestroy、Update
窗口事件回调函数:
OnHierarchyChange、OnFocus、OnLostFocus、OnProjectChange、OnInspectorUpdate、OnSelectionChange
常用成员:
1 | //静态变量 |
EditorGUI
EditorGUI 提供了相对 GUI 更多的控件绘制API,专门提供于编辑器拓展使用,我们一般会将他们配合使用来进行编辑器拓展开发,而加了Layout的两个公共类(GUILayout、EditorGUILayout)只是多了自动布局功能
文本、层级和标签、颜色拾取 控件:
1 | //文本 |
枚举、选择、按下按钮 控件:
1 | //枚举选择 |
PS:多选枚举进行的是或运算,所以枚举最好赋值成2的幂次方