Unity 6.3
0 онлайн 63 гостей 3 в системе
Вход

Handles.CylinderHandleCap

Declaration

public static void CylinderHandleCap(int controlID, Vector3 position, Quaternion rotation, float 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 как CylinderExample.cs и добавление компонента CylinderExample к объекту в Scene.

using UnityEngine;

public class CylinderExample : MonoBehaviour {}

Добавьте следующий скрипт в Assets/Editor как CylinderExampleEditor.cs и выберите объект с компонентом CylinderExample.

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(CylinderExample))] public class CylinderExampleEditor : Editor { float size = 1f;

protected virtual void OnSceneGUI() { if (Event.current.type == EventType.Repaint) { Transform transform = ((CylinderExample)target).transform; Handles.color = Handles.xAxisColor; Handles.CylinderHandleCap( 0, transform.position + new Vector3(3f, 0f, 0f), transform.rotation * Quaternion.LookRotation(Vector3.right), size, EventType.Repaint ); Handles.color = Handles.yAxisColor; Handles.CylinderHandleCap( 0, transform.position + new Vector3(0f, 3f, 0f), transform.rotation * Quaternion.LookRotation(Vector3.up), size, EventType.Repaint ); Handles.color = Handles.zAxisColor; Handles.CylinderHandleCap( 0, transform.position + new Vector3(0f, 0f, 3f), transform.rotation * Quaternion.LookRotation(Vector3.forward), size, EventType.Repaint ); } } }