Unity3D編輯器擴充套件——EditorWindow互動響應事件
阿新 • • 發佈:2018-12-15
Unity的編輯器介面中由這麼一些事件:
EventType MouseDown //滑鼠按下 MouseUp //滑鼠擡起 MouseMove //滑鼠移動(沒觸發成功) MouseDrag//滑鼠拖動 KeyDown//按鍵按下 KeyUp //按鍵擡起 ScrollWheel//中輪滾動 Repaint //每一幀重新渲染會發 Layout //佈局更新 DragUpdated //拖拽的資源進入介面 DragPerform //拖拽的資源放到了某個區域裡 Ignore //操作被忽略 Used//操作已經被使用過了 ValidateCommand //有某種操作被觸發(例如複製和貼上) ExecuteCommand//有某種操作被執行(例如複製和貼上) DragExited //鬆開拖拽的資源 ContextClick //右鍵點選 MouseEnterWindow //滑鼠進入窗體(沒觸發成功) MouseLeaveWindow //滑鼠離開窗體(沒觸發成功)
private void OnGUI() { if (Event.current.type == EventType.MouseDown) { Debug.LogError(EventType.MouseDown);//滑鼠按下 } else if (Event.current.type == EventType.MouseUp) { Debug.LogError(EventType.MouseUp);//滑鼠擡起 } else if (Event.current.type == EventType.MouseMove) { Debug.LogError(EventType.MouseMove); } else if (Event.current.type == EventType.MouseDrag) { Debug.LogError(EventType.MouseDrag);//滑鼠拖動 } else if (Event.current.type == EventType.KeyDown) { Debug.LogError(EventType.KeyDown);//按鍵按下 } else if (Event.current.type == EventType.KeyUp) { Debug.LogError(EventType.KeyUp);//按鍵擡起 } else if (Event.current.type == EventType.ScrollWheel) { Debug.LogError(EventType.ScrollWheel);//中輪滾動 } else if (Event.current.type == EventType.Repaint) { Debug.LogError(EventType.Repaint);//每一幀重新渲染會發 } else if (Event.current.type == EventType.Layout) { Debug.LogError(EventType.Layout); } else if (Event.current.type == EventType.DragUpdated) { Debug.LogError(EventType.DragUpdated);//拖拽的資源進入介面 } else if (Event.current.type == EventType.DragPerform) { Debug.LogError(EventType.DragPerform);//拖拽的資源放到了某個區域裡 } else if (Event.current.type == EventType.Ignore) { Debug.LogError(EventType.Ignore);//操作被忽略 } else if (Event.current.type == EventType.Used) { Debug.LogError(EventType.Used);//操作已經被使用過了 } else if (Event.current.type == EventType.ValidateCommand) { Debug.LogError(EventType.ValidateCommand);//有某種操作被觸發(例如複製和貼上) } else if (Event.current.type == EventType.ExecuteCommand) { Debug.LogError(EventType.ExecuteCommand);//有某種操作被執行(例如複製和貼上) } else if (Event.current.type == EventType.DragExited) { Debug.LogError(EventType.DragExited);//鬆開拖拽的資源 } else if (Event.current.type == EventType.ContextClick) { Debug.LogError(EventType.ContextClick);//右鍵點選 } else if (Event.current.type == EventType.MouseEnterWindow) { Debug.LogError(EventType.MouseEnterWindow); } else if (Event.current.type == EventType.MouseLeaveWindow) { Debug.LogError(EventType.MouseLeaveWindow); } }
具體使用:
右鍵顯示選單:
if (Event.current.type == EventType.ContextClick) { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("1"), false, null, null); menu.AddSeparator(""); menu.AddItem(new GUIContent("2"), false, null, null); menu.ShowAsContext(); //設定該事件被使用 Event.current.Use(); }