Hierarchy视图中选择一个游戏对象以后通过右键可以打开一个unity默认菜单,一般情况下都可以满足我们,但是我想真对某些特殊的游戏对象而展开特殊的菜单。如下图所示,比如这样:
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
using UnityEngine; using UnityEditor; using System.Collections; public class MyHierarchyMenu { [MenuItem("Window/Test/yusong")] static void Test() { } [MenuItem("Window/Test/momo")] static void Test1() { } [MenuItem("Window/Test/雨松/MOMO")] static void Test2() { } [InitializeOnLoadMethod] static void StartInitializeOnLoadMethod() { EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI; } static void OnHierarchyGUI(int instanceID, Rect selectionRect) { if (Event.current != null && selectionRect.Contains(Event.current.mousePosition) && Event.current.button == 1 && Event.current.type <= EventType.mouseUp) { GameObject selectedGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject; //这里可以判断selectedGameObject的条件 if (selectedGameObject) { Vector2 mousePosition = Event.current.mousePosition; EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Window/Test",null); Event.current.Use(); } } } } |
OK 欢迎大家在下面给我留言讨论。 如果你想改Project视图的右键菜单,原理也是一样的。
Unity版本5.3.0
- 本文固定链接: https://www.xuanyusong.com/archives/3893
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
大佬,我按照源码写,结果添加到了window的菜单栏上,想问下怎么解决
请问一下,我用类似的方法右键一键更改Hierarchy里物体上的代码里的参数(如:物体上挂了个代码,里面有一个String),右键改完后一运行,或从新打开场景就恢复成预制体上的参所属性,这个怎末解决
为什么我右键一点Unity直接崩了
我也试了试,是因为你在DisplayPopupMenu那里的菜单路径字符串写的跟MenuItem那里的一样了吧。
比如
[MenuItem(“GameObject/Copy Path”, priority = -1)]
private static void CopyPath(){}
…
EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), “GameObject/Copy Path”, null);
我是这么崩溃的。。
请问一下,如果在hierarchy中选择一个物体是个特定的类型,就禁止删除通过快捷键或者按钮来删除它,这个怎么做?
用[MenuItem(“GameObject/MyCategory/Custom Game Object”, false, 10)]
正解!俺是查看UGUI的源码找到的!
InitializeOnLoadMethod 4.x会报错
4.x可以用 InitializeOnLoad
InitializeOnLoad报错,只能用在class上
怎么保留原来的选项
第三个参数是order你可以一个个试了。。。
雨松大哥,没有get 到你的点啊,第三个参数是哪个?order又是啥?
同问:第三个参数是什么雨松哥?
排序
老大[威武] 这么快就回复了[亲亲]
Event.current.type <= EventType.mouseUp or Event.current.type== EventType.mouseUp
哦,这里应该写等号。[嘻嘻]
[威武]
[给力][good]