Version: 2019.2
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);

Parameters

idControl id of the handle.
rotation@param rotation Вращение диска.
position@param position Центр диска.
axis@param axis Оси для вращения вокруг.
size@param size Размер маркера.
cutoffPlane@param cutoffPlane Если true, перетаскивается только фронтальная половина круга. Это полезно, когда у вас много перекрывающихся осей вращения (как в стандартном инструменте "rotate"), чтобы избежать путаницы.
snap@param size Размер маркера.

Returns

Quaternion @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.

Description

Делает перемещаемый мышкой 3D диск.

Важно: Используйте HandleUtility.GetHandleSize если вам нужны маркеры постоянного размера.


Disc Handle on the Scene View.

// 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(); } } }

И скрипт, прикрепленный к данному маркеру:

// Name this script "DiscHandle"
using UnityEngine;
[ExecuteInEditMode]
public class DiscHandle : MonoBehaviour
{
    public Quaternion rot = Quaternion.identity;
    public void Update()
    {
        transform.rotation = rot;
    }
}