经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Unity Editor自定义菜单排序(MenuItem Order)
来源:cnblogs  作者:赵青青  时间:2021/6/7 8:56:59  对本文有异议

扩展Unity的菜单MenuItem

MenuItem 属性用于向主菜单和检视面板上下文菜单添加菜单项。

该 MenuItem 属性能够将任何静态函数转变为菜单命令,仅静态函数可使用 MenuItem 属性

我的Unity版本:2019.3.7f1

创建菜单这几种写法都是可行

  1. 函数参数有MenuCommand (menuCommand.context是当前菜单选中的对象)
  1. [MenuItem("GameObject/KSFramework/Custom Game Object", false, 10)]
  2. static void CreateCustomGameObject(MenuCommand menuCommand)
  3. {
  4. GameObject go = new GameObject("Custom Game Object");
  5. //把新创建的gameobject放在选中节点下
  6. GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
  7. // Ctrl+Z可撤销当前操作
  8. Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
  9. Selection.activeObject = go;
  10. }
  1. 普通创建一个菜单
  1. [MenuItem("GameObject/排在系统菜单前(-1)", false, -1)]
  2. public static void GameObjectMenu1()
  3. {
  4. Debug.Log("hello");
  5. }

菜单排序

使用MenuItem创建菜单时,最后一个字段就是菜单的排序

  1. [MenuItem("GameObject/UI/Image/创建", false, 2001)]
  2. static public void AddImage(MenuCommand menuCommand)
  3. {
  4. GameObject go = DefaultControls.CreateImage(GetStandardResources());
  5. PlaceUIElementRoot(go, menuCommand);
  6. var image = go.GetComponent<img>();
  7. image.raycastTarget = false;
  8. }
  1. MenuItem(string path, bool isValidateFunction, int priority)
  2. - path 在那个菜单上显示的,如GameObject/UI/xx ,会在Hierchy的右键菜单中显示
  3. - isValidateFunction 当设置为true时,函数的返回值要为bool。另一个和它用MenuItem标记的相同路径的方法在调用之前会调用它,根据返回值来验证方法是否可执行,比如:开启服务菜单只能点一次,点完之后置灰,需要关闭才能再点击。
  4. - Priority 菜单的排序

Unity内置菜单排序

Assets菜单的排序优先级

注意:不指定排序,也是在最后面,比如:[MenuItem("Assets/获取size")]

Unity原生Assets菜单的排序优先级

Assets/Create菜单排序

Assets/Create菜单排序

GameObject菜单排序

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

GameObject菜单排序

Window菜单排序

Window菜单排序

其它

自定义AddComponent名字

一般情况下,我们点AddComponent,然后输入脚本的名字就可以附加上去,当然也可以自定义一个名字,比如

  1. [AddComponentMenu("KSFramework/ActorBase")]
  2. public class ActorBase : MonoBehaviour

自定义AddComponent名字

参考资料

这篇文章非常详细地讲解了菜单项中的排序,包括Unity默认菜单的排序数值,本文的一些图也是来源于这篇文章 《 Guide to Extending Unity Editor’s Menus

原文链接:http://www.cnblogs.com/zhaoqingqing/p/14837474.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号