Объявление
public static Quaternion FreeRotateHandle(int id, Quaternion rotation, Vector3 position, float size);public static Quaternion FreeRotateHandle(Quaternion rotation, Vector3 position, float size);
Параметры
id | Идентификатор управления дескриптора. |
rotation | Ориентация ручки. |
position | Центр ручки в трехмерном пространстве. |
size | Размер ручки. Примечание. Используйте HandleUtility.GetHandleSize, если вы хотите иметь дескрипторы постоянного размера экрана.. |
Возвращает
Quaternion Новое значение поворота, измененное взаимодействием пользователя с маркером. Если пользователь не перемещал дескриптор, он вернет то же значение, которое вы передали в функцию.
Описание
Создаёт дескриптор неограниченного поворота.
Ручка может свободно вращаться по всем осям. Гизмо вращения не имеет видимых осей и представляет собой просто круг в представлении «Сцена». Пользователи могут щелкнуть и перетащить внутри круга, чтобы обеспечить поворот входных данных для вашего сценария редактора.

// Назовите этот скрипт "FreeRotateEditor"
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(FreeRotate))]
[CanEditMultipleObjects]
public class FreeRotateEditor : Editor
{
public void OnSceneGUI()
{
FreeRotate t = (target as FreeRotate);
EditorGUI.BeginChangeCheck();
Quaternion rot = Handles.FreeRotateHandle(t.rot, Vector3.zero, 2);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(target, "Free Rotate");
t.rot = rot;
t.Update();
}
}
}
И скрипт, прикрепленный к этому дескриптору:
// Name this script "FreeRotate"
using UnityEngine;
[ExecuteInEditMode]
public class FreeRotate : MonoBehaviour
{
public Quaternion rot = Quaternion.identity;
public void Update()
{
transform.rotation = rot;
}
}