Event.Use
Declaration
public void Use();Описание
Используйте это событие.
Вызывайте этот метод, когда вы использовали событие. Тип события будет установлен на EventType.Used, в результате чего другие элементы GUI будут игнорировать его.
События типа EventType.Repaint и EventType.Layout не должны использоваться. Попытка вызвать этот метод на таких событиях вызовет предупреждение.
Следующий пример демонстрирует, как события потребляются и используются. Скопируйте этот код в скрипт и откройте созданное в этом примере окно Пример из меню Окно.
using UnityEditor; using UnityEngine;
public class ExampleWindow : EditorWindow { [MenuItem("Window/Show Example Window")] public static void ShowWindow() { GetWindow(typeof(ExampleWindow)); }
private void OnGUI() { if (Event.current.type == EventType.MouseDown && Event.current.button == 0) { Debug.Log("Left clicked at: " + Event.current.mousePosition); // This if statement Uses up the current MouseDown event so that // subsequent code or GUI elements ignore this MouseDown event. Event.current.Use(); }
// This if statement does not check Event.current.button, but it only triggers // when Event.current.button is not 0 because the previous if statement will // Use up the MouseDown event if it is. if (Event.current.type == EventType.MouseDown) { Debug.Log("This only prints when we right click!"); Event.current.Use(); } } }
Следующий пример демонстрирует, как такие обработчики, как ,Handles.PositionHandle, и ,Handles.FreeMoveHandle, могут использовать события.
using UnityEditor; using UnityEngine;
public static class CustomHandle { public static bool DoHandle(Vector3 worldpos, float size, float pickSize) { int id = GUIUtility.GetControlID(FocusType.Passive); Event evt = Event.current;
bool clicked = false;
switch (evt.GetTypeForControl(id)) { case EventType.MouseDown: if (evt.button == 0 && HandleUtility.nearestControl == id) { GUIUtility.hotControl = id;
evt.Use(); // Using the MouseDown event clicked = true; } break;
case EventType.MouseMove: HandleUtility.Repaint(); evt.Use(); // Using the MouseMove event break;
case EventType.MouseUp: if (evt.button == 0 && HandleUtility.nearestControl == id) { GUIUtility.hotControl = 0; evt.Use(); // Using the MouseUp event } break;
case EventType.Layout: HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(worldpos, pickSize)); // Keep in mind Layout events should not be Used! break;
case EventType.Repaint: // Draw the handle here // Keep in mind Repaint events should not be Used! break; }
return clicked; } }