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 ...
随机推荐
- Solon2 开发之IoC,五、Bean 扫描的三种方式
1.启动时扫描 package org.example.demo; public class DemoApp{ public static void main(String[] args){ // / ...
- Building wheel for opencv-python (pyproject.toml) ,安装命令增加 --verbose 参数
安装时间较长,通过 --verbose 参数 可以看在不在继续 Mac 安装 paddlehub 出现 Building wheels for collected packages: opencv-p ...
- Axure 标记元件
快照:可以用来表示控件的截图功能 箭头:有了连线,基本很少用它 便签:相关于便利贴,写些说明.备注, 标记:标记好数字,对应数字的标记做解释说明
- java中类的普通初始化块一定在静态初始化块后运行吗
大部分教程都会告诉我们静态初始化块和静态字段总是在初始化块和普通类字段前运行,事实上也确实如此,直到我看到下面这样的代码: public class Test { static Test test = ...
- Tomcat--安装&&配置文件
配置信息 centos:7.8 tomcat:7.0.3 jdk:1.8 1 部署java环境 [root@localhost ~]# tar xvf jdk-8u181-linux-x64.tar. ...
- Codeforces 189 A. Cut Ribbon(DP 恰装满的完全背包问题)
题目链接 Polycarpus has a ribbon, its length is n. He wants to cut the ribbon in a way that fulfils the ...
- Windows 系统如何完全卸载 VSCode
0. 参考资料 Uninstall visual studio code in windows 1. 删不干净的用户数据 最近正在从 Sublime Text 3 环境切换到 VS Code,看重的是 ...
- C#查找算法1:二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 原理:将n个元素分成个数大致相同的两半,取 ...
- 如何学习 Photoshop
你有没有想过"图像处理或图形设计看起来很酷,我要学习 Photoshop!" 然后你第一次打开 Photoshop,并被你所看到的东西所震撼. Photoshop 是一款功能强大的 ...
- P5728 【深基5.例5】旗鼓相当的对手
1.题目介绍 2.题解 2.1 二维数组 思路 主要熟悉vector创建二维数组的方法 vector<vector> ans(N,vector(3)); 这里第一个元素表明数组大小,第二个 ...