id | 句柄的控件 ID。 |
rotation | 旋转盘的旋转度。 |
position | 旋转盘的中心。 |
axis | 旋转围绕的轴。 |
size | 旋转盘在世界空间中的大小。 |
cutoffPlane | 如果为 true,则仅绘制/可拖动的圆圈的前半部分。当您有许多重叠的旋转轴(例如在默认旋转工具中)时,此设置非常有用,可避免混乱。 |
snap | 要捕捉到的网格大小。 |
Quaternion 用户与句柄进行交互后修改的新旋转值。如果用户未移动句柄,则返回与您传递给函数的相同值。
制作一个可以用鼠标拖动的 3D 旋转盘。
注意:在您可能需要大小恒定、以屏幕为单位的句柄时,可以使用 HandleUtility.GetHandleSize。
场景视图中的旋转盘句柄。
// 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; } }