id | Control id of the handle. |
rotation | @param rotation Вращение диска. |
position | @param position Центр диска. |
axis | @param axis Оси для вращения вокруг. |
size | @param size Размер маркера. |
cutoffPlane | @param cutoffPlane Если true, перетаскивается только фронтальная половина круга. Это полезно, когда у вас много перекрывающихся осей вращения (как в стандартном инструменте "rotate"), чтобы избежать путаницы. |
snap | @param size Размер маркера. |
Quaternion @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.
Делает перемещаемый мышкой 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; } }