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

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;
    }
}