有没有办法在Unity Editor脚本中将Event.ContextClick添加到Gui.Window?
以下是我尝试从 OnGUI()和我的窗口的 WindowFunction 调用的上下文菜单方法(调用网站在下面表示为“网站” :没有运气“)。除非我直接在主编辑器窗口中单击,否则我无法显示“成功”消息。如果我右键单击我创建的任何Gui.Windows,则不会显示ContextClick事件。
void OnStateContextMenu(){
Event evt = Event.current;
// Ignore anything but contextclicks
if(evt.type != EventType.ContextClick)return;
Debug.Log("Success");
// Add generic menu at context point
GenericMenu menu = new GenericMenu();
menu.AddItem (new GUIContent ("AddState"),false,AddState,evt.mousePosition);
menu.ShowAsContext ();
evt.Use();
}
呼叫网站:
void doWindow(int id){
// OnStateContextMenu(); //site1: no luck
GUI.DragWindow();
}
void OnGUI(){
OnStateContextMenu(); //site2: no luck here either
BeginWindows();
wndRect = GUI.Window(0,wndRect,doWindow,"StateWnd");
EndWindows();
}
更新
作为参考,绿色区域响应右键单击,红色区域不响应。但是我想要它。我创建的右键单击菜单具有特定的操作,如果鼠标光标右键单击我的一个窗口内部,即图像中的“Hello”,我只希望可见。注意:忽略该按钮,右键单击在该窗口内的任何位置都不起作用。
答案 0 :(得分:1)
这可能不会直接回答您的问题但应该能够提供帮助
您正试图在红色框内实现右键功能(如图中所示) 不久之前我有一个类似的问题,但它不是用于右击而是用于鼠标悬停 所以我认为这可以帮助你
string mouseover; // first of i created a new string
if (GUI.Button (new Rect (100,100,200,200),new GUIContent("Load game", "MouseOverOnButton0") ,menutexture ))
{
//added a mousoveronbutton command to my GUIcontent
executestuff();
}
buttoncheck();
}
void buttoncheck()
{
mouseover = GUI.tooltip;
if(mouseover == "MouseOverOnButton0")
{
GUI.Box(new Rect(380,45,235,25),"Not a implemented function as of yet ");
}
}
这个代码在鼠标击中盒子的那一刻制作了一个新的gui盒子。
如果您在单独的框中创建了 hello ,则可以使用此
if(mouseover == hello)
{
if(rightclick == true)
{
execute the stuff you want
}
}
或类似的东西。希望这有点帮助
的更新强> 的
要获得右键单击事件,您必须使用
if(Event.current.button == 1&& Event.current.isMouse)
您必须将其放在OnGUI中才能正常工作
这样你首先触发in box部分,然后检查右键并执行你想要的东西。