unityEditor扩展开发onGUI添加右键菜单
Posted avi9111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unityEditor扩展开发onGUI添加右键菜单相关的知识,希望对你有一定的参考价值。
自定义扩展右键菜单Menu代码
非传统的menutools或者在Inspector右键
骑士,inspector右键也挺好用的,挺有用的
但,最近在做热更模块,基于GF框架
这个界面有一些按钮,几乎没有位置添加了,所以临时想在这个界面做右键
所以,需要创建,自定义右键菜单
在,网上找到这样的代码,应该能用
void OnGUI()
GUILayout.Space(5f);
EditorGUILayout.LabelField(Utility.Text.Format("Resource List (0)", m_Controller.ResourceCount), EditorStyles.boldLabel);
// 右键点击事件 //
var eve = Event.current;
var contentRect = new Rect(10, 10, 100, 100);
if (eve.type == EventType.ContextClick)
Debug.LogError("contentClick");//在onGUI界面的任何位置,右键都会触发 EventType.ContextClick
//
右键触发事件,+GenericMenu 还算简单,难就难在如何定位点击区域,和格努单个item的不同,而显示不同menu
当然,我暂时也没想到好方法
最终,封装了一下简单的代码:
//只需要在onGUI()调用即可得到右键鼠标的菜单显示
void OnGUI()
//....
OnGUIRightClick()
void OnGUIRightClick()
var eve = Event.current;
var contentRect = new Rect(10, 10, 100, 100);
if (eve.type == EventType.ContextClick)
//Debug.LogError("contentClick");//在onGUI界面的任何位置,右键都会触发 EventType.ContextClick
GenericMenu menu = new GenericMenu();
menu.AddItem(new GUIContent("清除所有-已有"),false,OnGUIRightItemClick,"item 1");
menu.AddItem(new GUIContent("22222222"),false,OnGUIRightItemClickEmpty,"item 2");
menu.ShowAsContext();
eve.Use();
/// <summary>
/// 清除“别的项目”的遗留Resources
/// </summary>
/// <param name="sender"></param>
void OnGUIRightItemClick(object sender)
if (m_Controller.ResourceCount == 0)
EditorUtility.DisplayDialog("", "当前 Res 为空,无需清除", "Ok");
return;
if (EditorUtility.DisplayDialog("", "不可还原,确认Ok?", "Ok", "Cancel"))
var allRes = m_Controller.GetResources();
for (int i = m_Controller.ResourceCount - 1; i >= 0; i--)
var done = m_Controller.RemoveResource(allRes[i].Name, allRes[i].Variant);
if (done)
ChangeSelectedResource(null);
RefreshResourceTree();
m_Controller.Save();
Debug.LogError("RemoveResource();" + i +" done?" + done);
void OnGUIRightItemClickEmpty(object sender)
EditorUtility.DisplayDialog("", "暂时没有功能 222222222","Ok");
附加
几个Unity快捷键:
「unity技巧」快捷键_浮动指针的博客-CSDN博客_unity暂停快捷键
不但官方的界面能用,自定义扩展的GUI界面也是同样受用快捷键(因为都是用了官方底层API)
以上是关于unityEditor扩展开发onGUI添加右键菜单的主要内容,如果未能解决你的问题,请参考以下文章
UnityEditor扩展开发_右键菜单很详细说明,以及优先参数的一张图