有unity中的菜单栏是我们经常使用到的地方,如下图:

MenuItem的作用就是增加一个自己的菜单

使用方法:

在工程中Assets目录下任意一个Editor目录(以后简称Editor目录,如果不存在,请自行创建)中创建任意脚本,比如我创建了叫做MenuTest .cs,双击进入代码编辑,创建一个静态函数,(代码来自官方文档http://docs.unity3d.com/Documentation/ScriptReference/MenuItem.html)如下:

public class MenuTest : MonoBehaviour
{
// Add a menu item named "Do Something" to MyMenu in the menu bar.
[MenuItem ("MyMenu/Do Something")]
static void DoSomething ()
   {
Debug.Log ("Doing Something...");
}
}

保存回到unity,编译好之后会发现在菜单栏上多了一个MyMenu,点击之后会出现二级选择菜单Do Something。点击Do Something会在输出窗口输出Doing Something...

是的,MenuItem的用法就是这么简单,将[MenuItem()]标签放在一个静态函数上,括号内部就是菜单层级。

public class MenuTest : MonoBehaviour
{
// Add a menu item named "Do Something" to MyMenu in the menu bar.
[MenuItem ("MyMenu/Do Something")]
static void DoSomething ()
{
Debug.Log ("Doing Something...");
} [MenuItem ("Assets/MyMenu")]
static void DoSomething ()
{
Debug.Log ("MyMenu Click");
}
}

要补充的是,菜单层级可以是系统自身的层级,比如Window菜单,Assets菜单等。例如

这样就会在系统的Assets菜单下生成一个MyMenu菜单。

对于Assets菜单,就是project窗口的右键菜单。所以,利用这个可以创建文件的右键菜单,比如创建一个xml文件等等

ok,这就是MenuItem的基本功能,再高级的用法,比如菜单的快捷键,不可用状态等,就见官网吧。

unity插件开发——MenuItem的更多相关文章

  1. unity插件开发——一个例子:简单的svn集成

    在unity开发过程中,通常我们习惯性地在Windows操作系统下使用svn进行版本管理,而每次提交更新,都需要回到文件夹下的这种操作让人无法忍受.是不是可以集成svn到unity中呢?查了一圈uni ...

  2. unity插件开发——AssetDatabase

    AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”).直观地说就是管理整个project窗口中的所有内容,比如,你可以增加.删除.修改文件等等. 这里有几个常 ...

  3. unity插件开发

    1.简单的svn集成: 查询svn的文档可以知道svn提供各种命令符操作.因此,原理非常简单,利用命令符操作调用svn即可.代码也非常简单: 更新:Process.Start("Tortoi ...

  4. unity插件开发——Selection

    Selection是一个静态类,它的主要功能是获取在project窗口中鼠标选择的对象或者是inspector窗口的当前显示的对象.它的字段有 activeGameObject activeInsta ...

  5. Unity编辑器下重启

    我们项目AssetBundle打包走的是全自动化流程,打包之前要进行各种资源检测,如果检测顺利通过,则进入打包,否则提示错误资源名称及路径,打包中断!有时候即使资源检测通过也会打包崩溃,初步断定是Un ...

  6. Unity3d 内置图形界面系统(Editor GUI)

    一.说在前面的 1.unity内置的ui系统,无论是在性能的表现上.功能的强大性上.制作复杂ui的便捷性上,还是其它的一些方面都不如一些第三方的插件来的好,如:NGUI和DF-GUI(PS: 后者比前 ...

  7. Unity5.x shader打包AssetBundle总结

    最近比较忙,好久没有更新博客了,新项目切换到unity5.x后使用了新的打包机制,在打包shader的时候遇到了一些问题,这里来记录一下吧. 在上一个项目中,我们使用unity4.7,对于shader ...

  8. Unity 游戏框架搭建 2019 (三十、三十一) MenuItem 显示顺序问题 & 类的提取

    在上一篇,我们得出了两个核心的学习思路: 根据问题去学习,并收集. 主动学习,并思考适用场景. 我们今天解决 MenuItem 显示顺序问题. 目前 MenuItem 显示如图所示: 我们来看下 Me ...

  9. [Unity2d系列教程] 006.Unity如何根据图片自动生成Animator

    Unity制作2D产品的时候,我们在制作动画的时候,要不断的生成Animation,Animator等等资源,如果动画一多的话,就变得麻烦.由于Unity是支持插件开发的,我们可以添加一个Editor ...

随机推荐

  1. 关于企业选取ERP软件的建议

    笔者以前在广州的一家叫速达软件的公司从事实施维护的工作,该公司是一家专注于ERP软件的公司,主要做进销存与财务的管理软件. 期间也对于各大企业有过一些接触,看到很多公司在购买这款软件之后与这家公司发生 ...

  2. web前端面试题及答案

    1.常用那几种浏览器测试?有哪些内核(Layout Engine)? 答: (Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera.    (Q2) 内核:Trident,Ge ...

  3. jQuery validata插件实现(每周一插件系列)

    大家好,第一次写有点正规的博客,以前都是随手复制几下.为了打LOL,我写快点,代码我都复制在最下面了,并且写了大量的注释. 首先我写jquery插件,喜欢这么写(好处有很多,以后在讲,哈哈,看过jQu ...

  4. CLOSE_WAIT TIME_WAIT

    TCP状态转移要点    TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放.网络服务器程序要同时 ...

  5. 【openstack N版】——手把手教你制作生产环境镜像

    一.CentOS7镜像制作 1.1创建CentOS7虚拟机 1.1.1创建虚拟磁盘 #注:尽量将虚拟机创建在控制节点,以便于将镜像上传至glance [root@linux-node1 ~]# qem ...

  6. linux 下 zookeeper安装

    1.安装zookeeper-3.4.6cd /usr/soft#解压zookeeper 安装包tar -zvxf zookeeper-3.4.6#拷贝安装包到安装目录cp zookeeper-3.4. ...

  7. JMX简单入门

    在一个系统中常常会有一些配置信息,比如服务的IP地址,端口号什么的,那么如何来来处理这些可配置项呢? 程序新手一般是写死在程序里,到要改变时就去改程序,然后再编译发布: 程序熟手则一般把这些信息写在一 ...

  8. C#中static void Main(string[] args) 参数详解

    学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...

  9. nodejs第二天之Buffer类

    2.1一个更好的操作二进制数据的类,我们在操作文件或者网络数据的时候,其实操作就是二进制数据,Node为我们提供了一个更加方便去操作这种数据流的类Buffer,它是一个全局的类. 2.2三种调用方式 ...

  10. 扩大按钮 btn 响应区域

    方法一:类别 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0 ...