Unity Editor 知识点整理( MenuItem)
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)相关推荐
- Unity知识点整理
1.Awake函数和Start函数的区别,调用顺序? Awake是脚本实例被加载的时候调用的,在脚本生命周期中,只可能被调用一次.Unity会先加载场景中所有对象,然后扫描所有带有MonoBehavi ...
- Unity 之 解决包体过大问题记录和纹理相关知识点整理
Unity 之 解决包体过大问题记录和纹理相关知识点整理 一,发现问题: 二,分析问题: 三,解决问题 3.1 问题分析 3.2 解决方案一 3.3 解决方案二 四,相关知识: 4.1 纹理导入: 4 ...
- 计算机图形学知识点整理(一)
计算机图形学知识点整理 八叉树空间划分: 八叉树是一个存储结构,我们的游戏空间存储的是三维的实体,那么这个实体是如何表示的呢?八叉树用一个正方体包含了这个对象,并且将正方体切分成八个小的正方体.八叉树 ...
- Unity editor 快速上手 quick start
Unity editor 快速上手 quick start Warning:非干货,是比较个人向的快速上手的代码例子,不一定是最好的方法,但能work. 主要目的是做一个可以动态添加和移除新的行的自定 ...
- 【Unity Editor工具制作-文本转UTF-8编码、用WPS表格打开表格、用WPS表格打开】
Unity Editor工具制作 文本转UTF-8编码 用NotePad打开 用WPS表格打开 文本转UTF-8编码 [MenuItem("Assets/文本转UTF-8编码")] ...
- Linux - 易错知识点整理(待更新)
Linux - 易错知识点整理(待更新) 本文根据CSDN Linux进阶技能树整理的易错知识点(带练),参考资料Linux常用命令大全(非常全!!!),Linux面试题(2020最新版)(带问/练) ...
- Unity教程之-制作闪亮的星星Star(三):给Star创建Unity Editor编辑器
继续上篇文章<Unity教程之-制作闪亮的星星Star(二):创建Shader>,本篇我们来讲解 unity star editor的创建! 建立编辑器 Creating the Insp ...
- C语言考研复试知识点整理
C语言考研复试知识点整理 1.由float x=3e-6,y=3e-6;不能得到x= =y的逻辑值为真. 解析:float类型的变量只能进行>或<运算,不能进行==运算 2.自增和自减运算 ...
- 【Android 面试基础知识点整理】
针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...
最新文章
- 车载网络处理器带来多功能能力
- 根据日期时间和随机量生成唯一ID!!
- 疫情冬天过去,二手经济春天到来
- Zabbix-3.0.0 安装Graphtree
- Hibernate中的3中状态
- 译:Self-Modifying cod 和cacheflush
- Mac OS 开启三指拖移,三指缩放,拖拽窗口,切换全面页面变成四指
- 存储过程从入门到精通(转载)
- Meterpreter命令详解
- android中桌面倒计时,android 倒计时显示
- 前端 PC端兼容性问题总结
- 前端常用英语单词(手都打累了)!
- 学习《华为基本法》(13):市场营销
- 2019.8.7 金华正睿集训总结Day11(ACM)
- java检测磁盘空间大小
- Android的证书验证过程
- 【通信系统】移动通信系统基础知识
- matplotlib可视化番外篇bar()--带误差棒的柱状图
- C++ 凯撒密码具体代码实现
- k8s 创建job 执行oc命令 删除/操作宿主机内pod
热门文章
- DrawText详解
- worker_connections exceed open file resource limit: 1024
- 计算机显示器刷新率怎么调,怎么设置电脑显示器的分辨率和刷新率 设置电脑显示器的分辨率和刷新率的方法...
- 笔记本开机小键盘自动启动
- python qq空间_GitHub - miyazawatomoka/Qzone-API: QQ空间的Python接口
- 如何使用 Spring Boot 开发邮件系统?
- SOLIDWORKS 2017官方正版功能介绍
- 读书笔记|《高质量读研:教你如何写论文、做科研》 张军平
- 机器视觉 OpenCV—python目标跟踪(光流)
- 百兆版UU加速盒加速switch下载红灯导致状态异常的解决方法