Unity Editor自定义菜单排序(MenuItem Order)
扩展Unity的菜单MenuItem
MenuItem 属性用于向主菜单和检视面板上下文菜单添加菜单项。
该 MenuItem 属性能够将任何静态函数转变为菜单命令,仅静态函数可使用 MenuItem 属性
我的Unity版本:2019.3.7f1
创建菜单这几种写法都是可行
- 函数参数有MenuCommand (menuCommand.context是当前菜单选中的对象)
[MenuItem("GameObject/KSFramework/Custom Game Object", false, 10)]
static void CreateCustomGameObject(MenuCommand menuCommand)
{
GameObject go = new GameObject("Custom Game Object");
//把新创建的gameobject放在选中节点下
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
// Ctrl+Z可撤销当前操作
Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
Selection.activeObject = go;
}
- 普通创建一个菜单
[MenuItem("GameObject/排在系统菜单前(-1)", false, -1)]
public static void GameObjectMenu1()
{
Debug.Log("hello");
}
菜单排序
使用MenuItem创建菜单时,最后一个字段就是菜单的排序
[MenuItem("GameObject/UI/Image/创建", false, 2001)]
static public void AddImage(MenuCommand menuCommand)
{
GameObject go = DefaultControls.CreateImage(GetStandardResources());
PlaceUIElementRoot(go, menuCommand);
var image = go.GetComponent<img>();
image.raycastTarget = false;
}
MenuItem函数定义
MenuItem(string path, bool isValidateFunction, int priority)
- path 在那个菜单上显示的,如GameObject/UI/xx ,会在Hierchy的右键菜单中显示
- isValidateFunction 当设置为true时,函数的返回值要为bool。另一个和它用MenuItem标记的相同路径的方法在调用之前会调用它,根据返回值来验证方法是否可执行,比如:开启服务菜单只能点一次,点完之后置灰,需要关闭才能再点击。
- Priority 菜单的排序
Unity内置菜单排序
Assets菜单的排序优先级
注意:不指定排序,也是在最后面,比如:[MenuItem("Assets/获取size")]

Assets/Create菜单排序

GameObject菜单排序
GameObject菜单中优先级小于50的,也将出现在Hierarchy的右键菜单中

Window菜单排序

其它
自定义AddComponent名字
一般情况下,我们点AddComponent,然后输入脚本的名字就可以附加上去,当然也可以自定义一个名字,比如
[AddComponentMenu("KSFramework/ActorBase")]
public class ActorBase : MonoBehaviour

参考资料
这篇文章非常详细地讲解了菜单项中的排序,包括Unity默认菜单的排序数值,本文的一些图也是来源于这篇文章 《 Guide to Extending Unity Editor’s Menus》
Unity Editor自定义菜单排序(MenuItem Order)的更多相关文章
- 一、Unity Editor自定义菜单
官方文档:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu ...
- 使用knockout-sortable实现对自定义菜单的拖拽排序
在开始之前,照例,我们先看效果和功能实现. 关于自定义菜单的实现,这里就不多说了,需要了解的请访问:http://www.cnblogs.com/codelove/p/4838766.html 这里需 ...
- 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false
关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...
- CI框架微信开发-自定义菜单
在CI框架下面实现了自定义菜单功能.写了一个model,一个类库.顺便附带access_token的实现方式 <?php class Makemenu{ public $menustr; pub ...
- Unity Editor 下创建Lua和Text文件
预览 在Project视图中,扩展右键菜单,右键 – Create - Text File 创建一个Text文件,或者Lua文件. 关键点 获取当前选择的路径,以Assets路径开头 var sele ...
- 最全面 think php 实现微信公众号回复编号进行投票,自定义菜单功能
前期准备工作 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messag ...
- ORACLE自定义顺序排序-转
ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...
- [wordpress]根据自定义字段排序并根据自定义字段查询
Wordpress中,根据根据自定义字段排序和查询是通过WP_Query()方法 如根据 一个自定义的sort的数字字段从小到大进行排序 $args = array( 'post_type' => ...
- 【转】Android 系统菜单与自定义菜单
Android 系统菜单与自定义菜单实现方法如下:系统菜单显示DefaultMenu.java package com.wxz.menu; import com.wxz.menu.R; import ...
- 微信自定义菜单url默认80端口问题解决
微信自定义菜单url默认80端口的,但是有些服务器上可能配置了多个tomcat.或者是刚好你服务器上80端口被占用了.在这样的情况下,我们可以通过如下方式解决: 首先安装apache,关于apache ...
随机推荐
- selenium多标签,多表单切换
Selenium多标签之间的切换 多标签之间的切换 有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新打开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况 获取所有窗口的句柄 han ...
- 【Vue】表单数据双向绑定 vue生命周期 fetch和axios发送请求 Vue全局组件
目录 昨日回顾 表单数据双向绑定(重要) checkbox单选 --- 布尔值 checkbox多选 --- 数组 radio单选 --- 字符串 给后端发送数据 购物车案例 全选按钮 商品添加删除 ...
- 路由分发 路由别名的名称空间 虚拟环境 HTTPresponse JsonResponse request对象获取文件 CBV源码剖析 模板语法传值特性 模板语法过滤器
目录 路由分发 路由别名冲突 反向解析失败 方式一:名称空间 include 方式二:别名不冲突即可 虚拟环境 python -m venv venv_name 视图层之必会三板斧 HTTPrespo ...
- #3038:How Many Answers Are Wrong (带权并查集)
HDU 3038 第一次接触带权并查集 //带权并查集 更新父节点的同时更新权值 #include<bits/stdc++.h> using namespace std; const in ...
- idea调式技巧汇总
调式进阶1: https://blog.csdn.net/future_god_qr/article/details/121250865 调式进阶2:(evaluate用法:)快捷键:alt+f8 ...
- 换架 3D 飞机,继续飞呀飞
相信大多数图扑 HT 用户都曾见过这个飞机的 Demo,在图扑发展的这十年,这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一. 这个 Demo 用简洁的代码生动地展示了 OBJ ...
- 四、java对mongo数据库增删改查操作
系列导航 一.linux单机版mongo安装(带密码验证) 二.mongo集群搭建 三.java连接mongo数据库 四.java对mongo数据库增删改查操作 五.mongo备份篇 mongoexp ...
- js判断null最标准写法
- P4837
日了啊,这道题每个输入中有多组输入,每处理完一组输入需要清空STL的stack类对象的啊.要是自己写的栈或许能想起来重新top=1,但是这用的STL现成的stack,就忘了while(!sk.empt ...
- Android Gradle 导入 Kotlin gRPC
project build.gradle plugins { id "com.google.protobuf" version "0.9.1" apply fa ...