2

Unity EditorスクリプトのGui.WindowにEvent.ContextClickを追加する方法はありますか?

以下は、 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();
}

アップデート

参考までに、緑の領域は右クリックに反応しますが、赤の領域は反応しません。しかし、私はそれを望んでいます。私が作成した右クリックメニューには、マウスカーソルがウィンドウの1つ(画像の「こんにちは」)内で右クリックした場合にのみ表示したい特定のアクションがあります。注:ボタンは無視してください。右クリックはそのウィンドウ内のどこでも機能しません。

ここに画像の説明を入力してください

4

1 に答える 1

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に配置する必要があります

このようにして、最初にインボックス部分をトリガーし、次に右クリックをチェックして、必要なものを実行します。

于 2013-02-24T19:18:43.003 に答える