pax, не знал про такую штуку. Вообще я помучился с этой кнопкой.
Иногда из-за нее переставало работать вращение камеры. Как кое-как заметил, вращение не работает, если нажать правой кнопкой мыши по батану.
Вот код этой функции

public static bool Do(int id, Vector3 position, Quaternion direction, float size, float pickSize, Handles.DrawCapFunction capFunc)
{
Event current = Event.current;
switch (current.GetTypeForControl(id))
{
case EventType.MouseDown:
if (HandleUtility.nearestControl == id)
{
GUIUtility.hotControl = id;
current.Use();
}
break;
case EventType.MouseUp:
if ((GUIUtility.hotControl != id) || ((current.button != 0) && (current.button != 2)))
{
break;
}
GUIUtility.hotControl = 0;
current.Use();
if (HandleUtility.nearestControl != id)
{
break;
}
return true;
case EventType.MouseMove:
if (((HandleUtility.nearestControl == id) && (current.button == 0)) || ((GUIUtility.keyboardControl == id) && (current.button == 2)))
{
HandleUtility.Repaint();
}
break;
case EventType.Repaint:
{
Color color = Handles.color;
if ((HandleUtility.nearestControl == id) && !GUI.enabled)
{
Handles.color = (Color) Handles.selectedColor;
}
capFunc(id, position, direction, size);
Handles.color = color;
break;
}
case EventType.Layout:
if (GUI.enabled)
{
HandleUtility.AddControl(id, HandleUtility.DistanceToCircle(position, pickSize));
}
break;
}
return false;
}
MouseDown работает для всех кнопок мыши.
Но код события MouseUp выполняется, только для левой кнопки мыши.
Похоже, если GUIUtility.hotControl не сбросить на ноль, то камера не будет работать.
Только как камера связана с GUIUtility.hotControl не понимаю.