Handles.Disc
Declaration
public static Quaternion Disc(int id, Quaternion rotation, Vector3 position, Vector3 axis, float size, bool cutoffPlane, float snap);public static Quaternion Disc(Quaternion rotation, Vector3 position, Vector3 axis, float size, bool cutoffPlane, float snap);Параметры
| Параметр | Описание |
|---|---|
| Идентификатор | Управление ID ручки. |
| ротация | Вращение диска. |
| должность | Центр диска. |
| оси | Ось вращения. |
| размер | Размер диска в мировом пространстве. |
| cutoffPlane | Если это значение установлено на true, то только передняя половина окружности может быть нарисована или перемещена. Это полезно, когда у вас много перекрывающихся осей вращения (как в инструменте поворота по умолчанию), чтобы избежать путаницы. |
| взлом | Размер сетки для привязки. |
Возвращаемое значение
Кватернион Новое значение поворота, измененное взаимодействием пользователя с ручкой. Если пользователь не передвигал ручку, она возвратит то же значение, которое вы передали функции.
Описание
Сделайте диск 3D, который можно перетаскивать мышей.
Примечание: Используйте HandleUtility.GetHandleSize там, где вы хотите иметь постоянные ручки размера экрана.
Ручка диска на Scene Вид.
// Name this script "DiscHandleEditor" using UnityEngine; using UnityEditor;
[CustomEditor(typeof(DiscHandle))] [CanEditMultipleObjects] public class DiscHandleEditor : Editor { public void OnSceneGUI() { DiscHandle t = (target as DiscHandle);
EditorGUI.BeginChangeCheck(); Quaternion rot = Handles.Disc(t.rot, t.transform.position, new Vector3(1, 1, 0), 5, false, 1);
if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Disc Rotate"); t.rot = rot; t.Update(); } } }
И скрипт, прикрепленный к этому Handle:
// Name this script "DiscHandle" using UnityEngine; [ExecuteInEditMode] public class DiscHandle : MonoBehaviour { public Quaternion rot = Quaternion.identity; public void Update() { transform.rotation = rot; } }