Unity编辑器扩展是对现有的Unity进行自定义功能扩展的一种方法,可以简化一些重复的开发动作,也可以用于制作插件
unity编辑器模式
unity的编辑器扩展绝大部分是用于unity的编辑器模式下,我们扩展的方法都是为了提高开发效率,但是这些方法在游戏运行时并没有作用。不需要将他们打包进工程,所以我们需要把这些不需要打包的资源和脚本放入名字是Editor的文件夹下,这个文件夹可以是跟目录也可以是子目录只要名字不写错就可以。
MenuItem特性
这里先介绍MenuItem特性(以下仅是我知道的)
- 添加自定义菜单项到Unity的大部分面板
- MenuItem是能做用于静态方法,因为Unity需要通过类名来调用
- MenuItem特性的方法可以放在任何脚本中
- MenuItem的三个参数(string itemName, bool isValidateFunction,int priority)
- string itemName:按钮方法的路径
- bool isValidateFunction:默认值false,剩下的一句话说不清,看下面。。。
- int priority:按钮在列表里的显示顺序和分组情况
在Unity菜单栏上添加自定义方法按钮
第一步、在Editor文件夹下新建一个脚本,写上下面的代码
using UnityEngine;
using UnityEditor;
//因为这个脚本不需要作为组件存在所以不需要继承自MonoBehaviour
public class NewButton
{
//MenuItem(string itemName,bool isValidateFunction,int priority);
[MenuItem("NewButton/Test1",false,1)]
static void Test1()
{
Debug.Log("Test1");
}
}
菜单栏上就会显示,我们点击Test1就会运行debug方法
再加上几行代码
[MenuItem("NewButton/Test2",false,2)]
static void Test2()
{
Debug.Log("Test2");
}
[MenuItem("NewButton/Test3", false, 13)]
static void Test3()
{
Debug.Log("Test3");
}