Unity Editor 基础篇(十一):MenuItem属性
来源:互联网 发布:剑灵灵剑士卡刀宏数据 编辑:程序博客网 时间:2024/05/16 19:56
参考链接:http://www.sikiedu.com/course/47/task/778/show#
MenuItem菜单项
MenuItem属性允许你添加菜单项到主菜单和检视面板上下文菜单。
(该属性把任意静态函数变为一个菜单命令。仅静态函数能使用这个MenuItem属性。)
1.为Unity添加菜单项
使用方法:
MenuItem(string itemName, bool isValidateFunction, int priority) itemName:菜单名称路径 isValidateFunction:不写为false,true则点击菜单前就会调用 priority:菜单项显示排序
第一个参数为菜单路径名称,可添加菜单快捷键:(空格后加如下符号设置)
_w 单一的快捷键 W #w shift+w %w ctrl+w &w Alt+w例如:
[MenuItem("GameObject/caymanwindow #w")] //这样就可以自定义快捷键调用方法,相当于点击了菜单项
第三个参数为优先级,表示上下排列的顺序,小的在上,不写则默认为1000。
例如:
[MenuItem("EamTools/T1",false,1)] static void T1() { } [MenuItem("EamTools/T2",false,2)] static void T2() { } [MenuItem("EamTools/T3",false,0)] static void T3() { }
效果:顺序受参数影响了
另外,如果相邻的两个的priority参数值相差>=11,则认为是不同组的,中间会有线分割显示:
[MenuItem("EamTools/T1",false,1)] static void T1() { } [MenuItem("EamTools/T2",false,12)] static void T2() { } [MenuItem("EamTools/T3",false,0)] static void T3() { }
第二个参数,默认为false,设为ture则击菜单前就会调用 如:检测按钮是否要显示(要谢两个方法,一个参数true控制按钮显示,一个参数false控制点击要做的事)
[MenuItem("GameObject/caymanwindow", true)] //用于判断按钮什么时候显示 static bool ValidateSelection() { return Selection.activeGameObject != null; } [MenuItem("GameObject/caymanwindow", false)] //点击按钮要做的事 static void Show() { Debug.Log("Show:"+Selection.activeGameObject.name); }
2.为组件添加菜单项
1/ 使用方法:
[MenuItem("CONTEXT/组件名/显示方法名")]这是个固定写法。
把“组件名“对应的脚本挂在物体上,则这个脚本组件右击后显示的上下文里便有了这样的菜单显示。
如:
[MenuItem("CONTEXT/Peoplr/InitMe")] static void InitMe() { Debug.Log("Init"); }
然后引入一个MenuCommand类:http://www.ceeger.com/Script/MenuCommand/MenuCommand.html
有两个变量:
context:上下文是一个菜单命令的目标对象。获取到的就是这个脚本组件对象。
userData:传递自定义信息到一个菜单项的整数。
在点击菜单调用的静态方法中加入MenuCommand参数,点击时系统便会自动的传入点击的脚本对象菜单进去:
[MenuItem("CONTEXT/Peoplr/InitMe")] static void InitMe(MenuCommand cmd) { Peoplr po = cmd.context as Peoplr; po.a = 5; Debug.Log("Init"); }然后我们获取到脚本组件对象,修改公开变量的值,形成初始化。
2/ 还有一种方法:ContextMenu内置属性
注意事项:
1.必须是放在 Assets / Editor 文件夹下的类,且使用了 using UnityEditor2.调用的函数必须是静态函数(static)
阅读全文
0 0
- Unity Editor 基础篇(十一):MenuItem属性
- Unity Editor 基础篇(十一):结点编辑器基础
- Unity Editor编辑器(MenuItem)
- Unity Editor 基础篇(七):Property Attributes自定义属性
- Unity Editor 基础篇(四):Handles
- Unity Editor 基础篇(五):Gizmos
- Editor------------------MenuItem
- Unity编辑器Unity Editor基础(一)
- Unity Editor 基础篇(一):Build-In Attribute
- Unity Editor 基础篇(二):自定义 Inspector 面板
- Unity Editor 基础篇(三):自定义窗口
- Unity Editor 基础篇(九):EditorUtility编辑器工具
- Unity Editor 基础篇(六):Property Drawers
- Unity Editor 基础篇(八):Decorator Drawers
- Unity Editor 基础篇(三):自定义窗口
- unity编辑器(二)----MenuItem的用法
- Unity Editor 基础篇(十二):更改Hierarchy面板物体显示
- Unity Editor 基础篇(十三):更改Project资源的Inspector显示
- web开发中审查元素编程思路
- 数据结构入门篇:约夫瑟斯数据环问题
- 深入理解ES7的async/await
- 设计模式综述
- Spring学习笔记之使用远程服务
- Unity Editor 基础篇(十一):MenuItem属性
- Qt学习笔记第1篇(Qt简介)
- 获取View的坐标和各种距离
- 样式和主题(Style and Theme)详解
- es6语法快速上手
- Java JDBC
- while...break 实例
- 博客tag
- ES6笔记