public MenuItem(string itemName, bool isValidateFunction);

构造函数

    //     Creates a menu item and invokes the static function following it, when the menu//     item is selected.//// 参数://   itemName://     The itemName is the menu item represented like a pathname. For example the menu//     item could be "GameObject/Do Something".//     选项的路径//   isValidateFunction://     If isValidateFunction is true, this is a validation function and will be called//     before invoking the menu function with the same itemName.//     验证函数 如果为真,就会在 相同的路径 的函数之前调用。如果验证函数返回false。//     那么选项在菜单中显示为灰色//   priority://     The order by which the menu items are displayed.//     选项在菜单中出现的顺序
 [MenuItem("MyMenu/Log Selected Transform Name")]static void LogSelectedTransformName(){Debug.Log("Selected Transform is on " + Selection.activeTransform.gameObject.name + ".");}// Validate the menu item defined by the function above.// The menu item will be disabled if this function returns false.[MenuItem("MyMenu/Log Selected Transform Name", true)]static bool ValidateLogSelectedTransformName(){// Return false if no transform is selected.return Selection.activeTransform != null;}

创建热键
可以使用以下特殊字符:%(在 Windows 上为 ctrl,在 macOS 上为 cmd)、# (shift)、& (alt)。如果不需要特殊的修改键组合,该键可以在下划线后给出。例如,要创建一个带有热键 shift-alt-g 的菜单,可以使用“MyMenu/Do Something #&g”。要创建带有热键 g 而不按下修改键的菜单,则使用“MyMenu/Do Something _g”。

一些特殊的键盘键可支持作为热键,例如,“#LEFT”可映射到 shift-left。支持这一功能的键为:LEFT、RIGHT、UP、DOWN、F1 … F12、HOME、END、PGUP 和 PGDN。

热键文本前必须有一个空格字符(“MyMenu/Do_g”不能被解释为热键,而“MyMenu/Do _g”则可以被解释为热键)。

 //_c:表示没有组合键,直接按住键盘"w"使用[MenuItem("MyTool/Test1 _c")]public static void Test1(){Debug.Log("直接按c");}//#c:表示按住 Shift + w 使用[MenuItem("MyTool/Test2 #c")]public static void Test2(){Debug.Log("Shift + c");}//%c:表示按住 Ctrl + w 使用[MenuItem("MyTool/Test3 %c")]private static void Test3(){Debug.Log("Ctrl + c");}//&c:表示按住 Alt + w 使用[MenuItem("MyTool/Test4 &c")]public static void Test4(){Debug.Log("Alt + c");}

给某组件添加右键菜单选项
[MenuItem(“CONTEXT/组件名/按钮名”)]
注意CONTEXT大写

 // Add a menu item called "Double Mass" to a Rigidbody's context menu.[MenuItem("CONTEXT/Rigidbody/Double Mass")]static void DoubleMass(MenuCommand command){Debug.Log(command.context);Rigidbody body = (Rigidbody)command.context;body.mass = body.mass * 2;Debug.Log("Doubled Rigidbody's Mass to " + body.mass + " from Context Menu.");}

MenuCommand
用于提取 MenuItem 的上下文。
MenuCommand 对象传递到使用 MenuItem 属性 定义的自定义菜单项函数。
注意:菜单会添加到对象中,并且可通过在检视面板中右键单击来访问。 脚本代码需要 CONTEXT 选项。

    public MenuCommand(Object inContext, int inUserData);       // 参数://   inContext://   Context is the object that is the target of a menu command.//   inUserData://   An integer for passing custom information to a menu item.

添加RigidBody组件,右键,效果如下

打印的 Context 为 组件挂载的对象的名字

 // Add a menu item to create custom GameObjects.// Priority 1 ensures it is grouped with the other menu items of the same kind// and propagated to the hierarchy dropdown and hierarchy context menus.// 添加菜单项以创建自定义游戏对象。//优先级1确保它与同类的其他菜单项分组//并传播到层次下拉菜单和层次上下文菜单。[MenuItem("GameObject/MyCategory/Custom Game Object", false, 10)]static void CreateCustomGameObject(MenuCommand menuCommand){// Create a custom game objectGameObject go = new GameObject("Custom Game Object");// Ensure it gets reparented if this was a context click (otherwise does nothing)GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);// Register the creation in the undo systemUndo.RegisterCreatedObjectUndo(go, "Create " + go.name);Selection.activeObject = go;}

参考资料
https://blog.csdn.net/qq_35361471/article/details/84713382
https://docs.unity.cn/cn/2019.4/ScriptReference/MenuItem.html

Unity Editor 知识点整理( MenuItem)相关推荐

  1. Unity知识点整理

    1.Awake函数和Start函数的区别,调用顺序? Awake是脚本实例被加载的时候调用的,在脚本生命周期中,只可能被调用一次.Unity会先加载场景中所有对象,然后扫描所有带有MonoBehavi ...

  2. Unity 之 解决包体过大问题记录和纹理相关知识点整理

    Unity 之 解决包体过大问题记录和纹理相关知识点整理 一,发现问题: 二,分析问题: 三,解决问题 3.1 问题分析 3.2 解决方案一 3.3 解决方案二 四,相关知识: 4.1 纹理导入: 4 ...

  3. 计算机图形学知识点整理(一)

    计算机图形学知识点整理 八叉树空间划分: 八叉树是一个存储结构,我们的游戏空间存储的是三维的实体,那么这个实体是如何表示的呢?八叉树用一个正方体包含了这个对象,并且将正方体切分成八个小的正方体.八叉树 ...

  4. Unity editor 快速上手 quick start

    Unity editor 快速上手 quick start Warning:非干货,是比较个人向的快速上手的代码例子,不一定是最好的方法,但能work. 主要目的是做一个可以动态添加和移除新的行的自定 ...

  5. 【Unity Editor工具制作-文本转UTF-8编码、用WPS表格打开表格、用WPS表格打开】

    Unity Editor工具制作 文本转UTF-8编码 用NotePad打开 用WPS表格打开 文本转UTF-8编码 [MenuItem("Assets/文本转UTF-8编码")] ...

  6. Linux - 易错知识点整理(待更新)

    Linux - 易错知识点整理(待更新) 本文根据CSDN Linux进阶技能树整理的易错知识点(带练),参考资料Linux常用命令大全(非常全!!!),Linux面试题(2020最新版)(带问/练) ...

  7. Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器

    继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...

  8. C语言考研复试知识点整理

    C语言考研复试知识点整理 1.由float x=3e-6,y=3e-6;不能得到x= =y的逻辑值为真. 解析:float类型的变量只能进行>或<运算,不能进行==运算 2.自增和自减运算 ...

  9. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

最新文章

  1. 车载网络处理器带来多功能能力
  2. 根据日期时间和随机量生成唯一ID!!
  3. 疫情冬天过去,二手经济春天到来
  4. Zabbix-3.0.0 安装Graphtree
  5. Hibernate中的3中状态
  6. 译:Self-Modifying cod 和cacheflush
  7. Mac OS 开启三指拖移,三指缩放,拖拽窗口,切换全面页面变成四指
  8. 存储过程从入门到精通(转载)
  9. Meterpreter命令详解
  10. android中桌面倒计时,android 倒计时显示
  11. 前端 PC端兼容性问题总结
  12. 前端常用英语单词(手都打累了)!
  13. 学习《华为基本法》(13):市场营销
  14. 2019.8.7 金华正睿集训总结Day11(ACM)
  15. java检测磁盘空间大小
  16. Android的证书验证过程
  17. 【通信系统】移动通信系统基础知识
  18. matplotlib可视化番外篇bar()--带误差棒的柱状图
  19. C++ 凯撒密码具体代码实现
  20. k8s 创建job 执行oc命令 删除/操作宿主机内pod

热门文章

  1. DrawText详解
  2. worker_connections exceed open file resource limit: 1024
  3. 计算机显示器刷新率怎么调,怎么设置电脑显示器的分辨率和刷新率 设置电脑显示器的分辨率和刷新率的方法...
  4. 笔记本开机小键盘自动启动
  5. python qq空间_GitHub - miyazawatomoka/Qzone-API: QQ空间的Python接口
  6. 如何使用 Spring Boot 开发邮件系统?
  7. SOLIDWORKS 2017官方正版功能介绍
  8. 读书笔记|《高质量读研:教你如何写论文、做科研》 张军平
  9. 机器视觉 OpenCV—python目标跟踪(光流)
  10. 百兆版UU加速盒加速switch下载红灯导致状态异常的解决方法