unity用的越久就越觉得这个引擎还是很好用的嘛,不然现在也不会那么火了,我想大家觉得它好用的其中一个原因就是它自身的可定制,可扩展能力,这要归功于unity引擎里有一个强大的编辑器。
对于unity编辑器这部分的开发目前我也是刚刚接触一些皮毛,所以简单的记录一下最近学到的知识,这次主要围绕着UnityEditor的MenuItem类来学习。我们知道unity的菜单栏里提供了很多快捷的功能,例如一些常用的设置,资源管理,创建物体等等。但是我们发现当我们导入了一些插件以后,这个菜单栏也是会跟着发生改变了,例如常用的NGUI插件,在导入成功以后就会在菜单栏里多出NGUI的这个选项,其实这个选项正是NGUI使用了UnityEditor的MenuItem来为编辑器附加的菜单选项。下面就来说一说,如何添加我们自己的菜单到unity菜单栏。
我们新建一个脚本,将它放到Scripts/Editor目录下,通常针对编辑器的脚本都放在Editor目录下(Editor目录属于unity的特殊目录之一),比如我们起名叫TestMenuItem.cs。然后呢在这个脚本里面我们添加一个static void的方法,比如我叫HelloWorld。然后在这个方法里我们输出一个log:helloworld!!!。然后在方法上面添加[MenuItem("MyTools/HelloWorld")]这句话,有点像java里的注解的方式,其实是C#中的一种叫"特性"(attribute)的东西,有兴趣的可以仔细看看C#语言关于这块的内容。
[MenuItem("MyTools/HelloWorld")]
static void HelloWorld()
{
Debug.Log("hello world!!!!!!!!!!!");
}
这句添加的是什么意思呢,就是在Unity菜单中添加一个MyTools的项目,然后在它下面添加一个叫HelloWorld的选项,然后当我们选择这个选项以后就会执行添加的这句话下面的方法。比如我们这里打印输出一句话:helloworld。值得一提的是如果我们添加的菜单选项的第一项是Assets目录,例如我们写[MenuItem("Assets/我在Assets下面哦,在Assets目录右键就能看到我")]那么我们不只在Assets菜单下面会看到我们添加的这段中文的选项,在unity编辑器的Project视图的Assets目录点击鼠标右键以后就可以在选项中看到。
这样就可以自己定义我们的unity编辑器的菜单了,比如我们unity项目中常用的要将一些资源打包成AssetBundle,我们就可以写一个方法,实现这些功能,然后将它添加到unity的编辑器菜单中,就可以简单的点点鼠标然后让编辑器帮我们打包了,用打包的时间去喝杯咖啡什么的~~