Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


AddControl(int, float)

Record a distance measurement from a handle.
Read time 1 minuteLast updated 4 days ago

Definition

  • Type: Method
  • Namespace: UnityEditor
  • Assembly: UnityEditor.CoreModule
public static void AddControl(int controlId, float distance)

Parameters

controlId

The ID that is recorded as the nearest control if the mouse cursor is near the handle.

distance

The distance from the mouse cursor to the handle.

Remarks

All handles call this with their controlID during layout, then use nearestControl to check if they got the mouseDown.

Examples

using UnityEngine;using UnityEditor;public class ExampleScript : MonoBehaviour{ public float value = 1.0f;}// A tiny custom editor for ExampleScript component.[CustomEditor(typeof(ExampleScript))]public class ExampleEditor : Editor{ // Custom in-scene UI for when ExampleScript component is selected. public void OnSceneGUI() { var controlID = GUIUtility.GetControlID(FocusType.Passive); var evt = Event.current; var t = target as ExampleScript; var tr = t.transform; var pos = tr.position; switch (evt.GetTypeForControl(controlID)) { case EventType.Layout: case EventType.MouseMove: // Set the nearest control ID to "controlID" if the mouse cursor is // near or directly above the solid disc handle. var distanceToHandle = HandleUtility.DistanceToCircle(pos, t.value); HandleUtility.AddControl(controlID, distanceToHandle); break; case EventType.MouseDown: // Log the nearest control ID if the click is near or directly above // the solid disc handle. if (controlID == HandleUtility.nearestControl && evt.button == 0) { Debug.Log($"The nearest control is {controlID}."); GUIUtility.hotControl = controlID; evt.Use(); } break; case EventType.MouseUp: if (GUIUtility.hotControl == controlID && evt.button == 0) { GUIUtility.hotControl = 0; evt.Use(); } break; case EventType.Repaint: // Display an orange solid disc where the object is. Handles.color = new Color(1, 0.8f, 0.4f, 1); Handles.DrawSolidDisc(pos, tr.up, t.value); break; } }}