Gui.Window ContextClick

时间:2013-02-24 06:28:26

标签: unity3d

有没有办法在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”,我只希望可见。注意:忽略该按钮,右键单击在该窗口内的任何位置都不起作用。

enter image description here

1 个答案:

答案 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部分,然后检查右键并执行你想要的东西。