为什么Unity Event以错误的方式工作?或者是我吗?

时间:2016-12-05 20:22:40

标签: c# unity3d editor

我尝试在MonoBehabiour脚本中的OnGUI函数中获取MouseUp事件。

但它总是返回“布局”和“重绘”。

    private void OnGUI() {
    Event e = Event.current;
    Debug.Log (e.type);
}

我的调试如下: 布局 重绘 布局 重绘 布局 重绘等等

为什么会这样? 我怎么知道获取事件MouseUp?

EDIT1:

Event e = Event.current;
    int s = e.button;

我可以知道当我点击鼠标按钮0时,但我怎么知道何时获得MouseUp事件?

EDIT2:

我想在编辑器中使用它,而不是在播放模式下。 有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用if (Event.current.type == EventType.MouseUp)获取事件MouseUp事件。

以下是完整的代码示例:

 void OnGUI()
 {
     Event mEvent = Event.current;

     if (mEvent != null && mEvent.isMouse)
     {
         //Get Mouse Down
         if (mEvent.type == EventType.MouseDown)
         {

         }

         //Get Mouse Up
         if (mEvent.type == EventType.MouseUp)
         {

         }

         //Get Mouse Move
         if (mEvent.type == EventType.MouseMove)
         {

         }
     }
 }

现在,要检测哪个鼠标按钮:

 //Left Mouse button
 if (mEvent.button == 0)
 {

 }

 //Right  Mouse button
 if (mEvent.button == 1)
 {

 }

 //Middle  Mouse button
 if (mEvent.button == 2)
 {

 }

您可以将这些内容放在if (mEvent.type == EventType.MouseDown)if (mEvent.type == EventType.MouseUp)代码中。