unity3D 学习笔记—MenuItem标签的使用

该文章所有效果都是在unity2018基础上实现的,其他版本不一定有该效果。

MenuItem的简介

1.MenuItem的作用

事先声明,以下作用全是自己猜测。

该标签多用于在编辑场景中,你可以将一写常用的方法添加为一个菜单,例如我需要将我选中的物体打包成一个Assetbundle,如果你不使用菜单来帮助你完成,你也可以通过添加脚本然后传入需要打包的物体,在运行时打包,但是如果你使用菜单栏,你只需选中需要打包的物体,执行菜单命令即可,所以该标签的作用的之一是执行一些可以在非运行状态下执行的操作。

2.MenuItem的使用范围

           该标签只适用于放在静态方法之前,但是为什么只能放在静态方法之前呢?因为静态方法不需要创建对象,如果是是非静态方法就需要先创建对象来执行,这样虽然也可以,但是麻烦。

要使用Menuitem需要添加UnityEditor命名空间。

1.在上方菜单栏添加标签 

[MenuItem("MyMenu/DoSomeThing")]
static void DoSomething()
{
	Debug.Log("do something");
}

 

菜单栏标签

效果如上图,在第一个字符串不是关键字的情况下,会在上方菜单栏创建一个菜单命令,该菜单命令的名称即为第一个字符串的名字,我试了一下好像不能只有一级菜单,最少是两级,点击后一个字符串名称的菜单,即可执行该方法。

 

2.验证菜单栏

	[MenuItem("MyMenu/LogTransFormname")]
	static void LogTransformName()
	{
		Debug.Log("TransformName is "+Selection.activeTransform.name);
	}
	[MenuItem("MyMenu/LogTransFormname",true)]
	static bool ValidatedLogTransformName()
	{
		return Selection.activeTransform!=null;
	}

验证菜单栏即为判断该菜单栏选项是否可用,要添加验证菜单栏的功能必须创建一个验证方法,验证方法的MenuItem的第一个参数必须一致,第二个参数为true,当验证方法返回值为true时,该菜单栏会被显示为灰色,未被禁用状态,添加该功能的目的是当你的方法是需要一定条件才能执行时,不会因为没有达到条件而出错。

3.给自定义的菜单栏添加快捷键

	[MenuItem("MyMenu/AddKey %j")]
	static void AddKey()
	{
		Debug.Log("this is addKey");
	}

在验证菜单栏中的图片即可看出,AddKey菜单命令被添加了一个Ctrl+J的快捷键,添加快捷键方法为"菜单名称+空格+快捷键",%对应Ctrl键,#对应Shift键,&对应Alt键,当然你也可以创建一个不带修饰符的菜单快捷键,但是你需要在这个快捷键之前添加一个_ (下划线)例如"MyMenu/Do Something _g" 该菜单栏的快捷键即为g,一些特殊的键盘键被支持作为热键,例如“#LEFT”将映射到shift-left。支持如下键:左、右、上、下、F1 ..F12, HOME, END, PGUP, PGDN。

4.在projects面板添加一个菜单命令

[MenuItem("Assets/UI/tool1",false,1)]
	static void DoAssets()
	{
		Debug.Log("doAssets");
	}

在projects面板添加一个菜单命令,需要第一个字符串为Assets。上方代码第二个参数表示是否是验证函数,第三个参数表示该方法的层级,层级影响该菜单命令的排列前后,设置为1,排列在最前面。

5.给组件或者脚本添加右键方法

	[MenuItem("CONTEXT/Transform/DoubleTran")]
	static void DoubleTran(MenuCommand command)
	{
		Transform body =(Transform)command.context;
		body.position*=2;
		Debug.Log("doubleTrans is"+body.position);
	}

如果需要给组件添加一个右键方法,第一个字符串必须为CONTEXT,第二个字符串必须为组件名称或者脚本名称,这个脚本也可以是自定义的脚本,第三个为菜单名称,command.context方法会获取被右键点击的脚本对象。

 

该文章主要是参考官方文档,然后自己实现了一下,终于完成了,真费时间。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值