controlID | The control ID for the handle. |
position | The world-space position of the handle's start point. |
rotation | The rotation of the handle. |
size | The size of the handle in world-space units. |
eventType | Event type for the handle to act upon. By design it handles EventType.Layout and EventType.Repaint events. |
Draw an arrow like those used by the move tool.
On EventType.Layout event, calculates handle distance to mouse and calls HandleUtility.AddControl accordingly.
On EventType.Repaint event, draws the handle shape.
Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
// Draw one circle on each axis of any GameObject // that has the "DummyScript.cs" script attached.
// DummyScriptEditor.cs (place this in Editor folder) [CustomEditor(typeof(DummyScript))] public class DummyScriptEditor : Editor { float size = 1; void OnSceneGUI() { if(Event.current.type == EventType.Repaint) { Transform transform = (target as DummyScript).transform; Handles.color = Color.red; Handles.ArrowHandleCap(0, transform.position + new Vector3(5, 0, 0), transform.rotation * Quaternion.LookRotation(new Vector3(1, 0, 0)), size, EventType.Repaint); Handles.color = Color.green; Handles.ArrowHandleCap(0, transform.position + new Vector3(0, 5, 0), transform.rotation * Quaternion.LookRotation(new Vector3(0, 1, 0)), size, EventType.Repaint); Handles.color = Color.blue; Handles.ArrowHandleCap(0, transform.position + new Vector3(0, 0, 5), transform.rotation * Quaternion.LookRotation(new Vector3(0, 0, 1)), size, EventType.Repaint); } } }
// DummyScript.cs public class DummyScript : MonoBehaviour { }