Handles.RectangleHandleCap
Declaration
public static void RectangleHandleCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType);public static void RectangleHandleCap(int controlID, Vector3 position, Quaternion rotation, Vector2 size, EventType eventType);Параметры
| Параметр | Описание |
|---|---|
| controlID | Управление ID для ручки. |
| должность | Положение ручки в пространстве Handles.matrix. |
| ротация | Вращение ручки в пространстве Handles.matrix. |
| размер | Размер ручки в пространстве Handles.matrix. Используйте HandleUtility.GetHandleSize, если требуется постоянный размер экранного пространства. |
| eventType | Тип события для обработчика, на котором он будет действовать. По замыслу он обрабатывает события EventType.Layout и EventType.Repaint. |
Описание
Нарисуйте прямоугольный ручка. Передайте это в функции ручки.
На событии EventType.Layout, вычисляет расстояние ручки до мыши и вызывает HandleUtility.AddControl соответственно.
На событии EventType.Repaint, рисует форму ручки.
Прямоугольная крышка ручки в представлении Scene.
Добавление следующего скрипта в папку Assets как RectangleExample.cs и добавление компонента RectangleExample к объекту в Scene.
using UnityEngine;
public class RectangleExample : MonoBehaviour {}
Добавьте следующий скрипт в Assets/Editor как RectangleExampleEditor.cs и выберите объект с компонентом RectangleExample.
using UnityEditor; using UnityEngine;
[CustomEditor(typeof(RectangleExample))] public class RectangleExampleEditor : Editor { float size = 1f;
protected virtual void OnSceneGUI() { if (Event.current.type == EventType.Repaint) { Transform transform = ((RectangleExample)target).transform; Handles.color = Handles.xAxisColor; Handles.RectangleHandleCap( 0, transform.position + new Vector3(3f, 0f, 0f), transform.rotation * Quaternion.LookRotation(Vector3.right), size, EventType.Repaint ); Handles.color = Handles.yAxisColor; Handles.RectangleHandleCap( 0, transform.position + new Vector3(0f, 3f, 0f), transform.rotation * Quaternion.LookRotation(Vector3.up), size, EventType.Repaint ); Handles.color = Handles.zAxisColor; Handles.RectangleHandleCap( 0, transform.position + new Vector3(0f, 0f, 3f), transform.rotation * Quaternion.LookRotation(Vector3.forward), size, EventType.Repaint ); } } }