我用Unity前的界面编辑器是可以选中节点右键显示菜单的,所以现在也想在Unity上弄一个,需要做的也不多,一是知道什么时候在Scene视图右键单击了,二是在鼠标位置上显示菜单.
对于拦截Scene视图的右键单击事件,可以给SceneView.onSceneGUIDelegate加个处理方法就可以了,Scene视图的大部分事件都可以统一在那里处理.
菜单的话Unity也封闭得很好了,主要用GenericMenu类,其AddItem方法就是增加一个菜单项,传入显示的GUIContent和回调函数即可,代码如下:
public class SceneEditor
{
[InitializeOnLoadMethod]
static void Init()
{
SceneView.onSceneGUIDelegate += OnSceneGUI;
}
static void OnSceneGUI(SceneView sceneView)
{
Event e = Event.current;
if (e != null && e.button == 1 && e.type == EventType.mouseUp)
{
//右键单击啦,在这里显示菜单
GenericMenu menu = new GenericMenu();
menu.AddItem(new GUIContent("菜单项1"), false, OnMenuClick, "menu_1");
menu.AddItem(new GUIContent("菜单项2"), false, OnMenuClick, "menu_2");
menu.AddItem(new GUIContent(