版本:Unity 6 (6000.0)
语言中文
  • C#

Handles.FreeRotateHandle

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有意见,但我们会阅读用户建议的每一处更改,并在适用范围内进行更新。

关闭

提交失败

由于某些原因,您建议的更改无法提交。请在几分钟后再<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Quaternion FreeRotateHandle(int id, Quaternion rotation, Vector3 position, float size);

声明

public static Quaternion FreeRotateHandle(Quaternion rotation, Vector3 position, float size);

参数

id 手柄的控制 ID。
rotation 手柄在 3D 空间中的方向。
position 手柄在 3D 空间中的中心。
size 手柄的大小。

注意:在您可能希望固定屏幕大小的手柄处,使用 HandleUtility.GetHandleSize。

返回值

四元数由用户与手柄交互修改后的新旋转值。如果用户未移动手柄,它将返回与您传递到函数中的相同值。

说明

制作一个无约束旋转手柄。

手柄可以在所有轴上自由旋转。旋转小工具在场景视图中没有可见的轴,而只是一个圆圈。用户可以单击并从圆圈中拖动以向编辑器脚本提供输入旋转。


在场景视图中看到的 FreeRotate 手柄。

// Name this script "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; } }