Объявление
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 | Идентификатор управления дескриптора. |
rotation | Вращение диска. |
position | Центр диска. |
axis | Ось, вокруг которой нужно вращаться. |
size | The size of the disc in world space. |
cutoffPlane | Если true, то рисуется/перетаскивается только передняя половина круга. Это полезно, когда у вас есть много перекрывающихся осей вращения (например, в инструменте вращения по умолчанию), чтобы избежать беспорядка.. |
snap | Размер сетки для привязки. |
Возвращает
Quaternion Новое значение поворота, измененное взаимодействием пользователя с маркером. Если пользователь не перемещал дескриптор, он вернет то же значение, которое вы передали в функцию.
Описание
Создаёт 3D-диск, который можно перетаскивать мышью.
Примечание. Используйте HandleUtility.GetHandleSize, если вы хотите иметь дескрипторы постоянного размера экрана.

// Назовите этот скрипт "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();
}
}
}
И скрипт, прикрепленный к этому дескриптору:
// Назовите этот скрипт "DiscHandle"
using UnityEngine;
[ExecuteInEditMode]
public class DiscHandle : MonoBehaviour
{
public Quaternion rot = Quaternion.identity;
public void Update()
{
transform.rotation = rot;
}
}