Version: 2021.3

Handles

class in UnityEditor

切换到手册

描述

场景视图中的自定义 3D GUI 控件和绘制操作。

手柄是 Unity 用于操作场景视图中的项的 3D 控件。内置的 Handle GUI 有很多,如通过变换组件定位、缩放和旋转对象的熟悉的工具。不过,您也可以自行定义 Handle GUI,以与自定义组件编辑器结合使用。此类 GUI 对于编辑以程序方式生成的场景内容、“不可见”项和相关对象的组(如路径点和位置标记)非常实用。

您还可以使用覆盖在场景视图上的 2D 按钮和其他控件来补充场景中的 3D 手柄 GUI。这是通过将标准 Unity GUI 调用封装在 Editor.OnSceneGUI 函数中的 Handles.BeginGUIHandles.EndGUI 对中完成的。可以使用 HandleUtility.GUIPointToWorldRayHandleUtility.WorldToGUIPoint 在 2D GUI 与 3D 世界坐标之间转换坐标。

using UnityEngine;
using UnityEditor;
public class ExampleScript : MonoBehaviour
{
    public float value = 7.0f;
}

// A tiny custom editor for ExampleScript component [CustomEditor(typeof(ExampleScript))] public class ExampleEditor : Editor { // Custom in-scene UI for when ExampleScript // component is selected. public void OnSceneGUI() { var t = target as ExampleScript; var tr = t.transform; var pos = tr.position; // display an orange disc where the object is var color = new Color(1, 0.8f, 0.4f, 1); Handles.color = color; Handles.DrawWireDisc(pos, tr.up, 1.0f); // display object "value" in scene GUI.color = color; Handles.Label(pos, t.value.ToString("F1")); } }

.

静态变量

centerColor用于表示某物体中心的手柄的颜色。
color手柄的颜色。
inverseMatrix所有手柄操作的矩阵的逆矩阵。
lighting手柄是否亮起?
lineThicknessRetrieves the user preference setting that controls the thickness of tool handle lines. (Read Only)
matrix所有手柄操作的矩阵。
preselectionColor用于突出显示鼠标指针下当前未选中的手柄的颜色。
secondaryColor用于一般物体的柔和色。
selectedColor用于当前处于活动状态的手柄的颜色。
UIColliderHandleColorColor to use for the Unity UI's padding visualization.
xAxisColor用于操纵某物体 X 坐标的手柄的颜色。
yAxisColor用于操纵某物体 Y 坐标的手柄的颜色。
zAxisColor用于操纵某物体 Z 坐标的手柄的颜色。
zTest手柄的 zTest。

变量

currentCamera为当前摄像机设置视口和相关内容。

静态函数

ArrowHandleCap绘制一个类似于移动工具所用箭头的箭头。
BeginGUI在 3D 手柄 GUI 内开始一个 2D GUI 块。
Button创建一个 3D 按钮。
CircleHandleCap绘制一个圆形手柄。将此手柄传递给 handle 函数。
ClearCamera清除摄像机。
ConeHandleCap绘制一个锥体手柄。将此手柄传递给 handle 函数。
CubeHandleCap绘制一个立方体手柄。将此手柄传递给 handle 函数。
CylinderHandleCap绘制一个圆柱体手柄。将此手柄传递给 handle 函数。
Disc创建一个可使用鼠标拖动的 3D 圆盘。
DotHandleCap绘制一个圆点手柄。将此手柄传递给 handle 函数。
DrawAAConvexPolygon绘制使用点数组指定的抗锯齿凸多边形。
DrawAAPolyLine绘制使用点数组和宽度指定的抗锯齿线。
DrawBezier绘制通过给定切线的起点和终点的纹理化贝塞尔曲线。
DrawCamera在矩形内绘制一个摄像机。
DrawDottedLine绘制一条从 p1 到 p2 的虚线。
DrawDottedLines绘制一系列虚线段。
DrawGizmos为给定摄像机绘制 Gizmos 的子集(在后处理之前或之后)。
DrawLineDraws a line from p1 to p2.
DrawLines绘制一系列线段。
DrawPolyLine绘制一条穿过 points 列表的线。
DrawSelectionFrame绘制一个面向选择框的摄像机。
DrawSolidArc在 3D 空间中绘制一个圆扇形(饼图)。
DrawSolidDisc在 3D 空间中绘制一个实心平面圆盘。
DrawSolidRectangleWithOutline在 3D 空间中绘制一个实心轮廓矩形。
DrawTexture3DSDFDraws a 3D texture using Signed Distance Field rendering mode in 3D space.
DrawTexture3DSliceDraws a 3D texture using Slice rendering mode in 3D space.
DrawTexture3DVolumeDraws a 3D texture using Volume rendering mode in 3D space.
DrawWireArcDraws a circular arc in 3D space.
DrawWireCube使用 center 和 size 绘制一个线框盒体。
DrawWireDiscDraws the outline of a flat disc in 3D space.
EndGUI结束一个 2D GUI 块并返回到 3D 手柄 GUI。
FreeMoveHandle创建一个不受约束的移动手柄。
FreeRotateHandle创建一个不受约束的旋转手柄。
GetMainGameViewSize获取主游戏视图的宽度和高度。
Label在 3D 空间中创建一个文本标签。
MakeBezierPoints返回表示贝塞尔曲线的点数组。
PositionHandle创建一个位置手柄。
RadiusHandle创建一个场景视图半径手柄。
RectangleHandleCap绘制一个矩形手柄。将此手柄传递给 handle 函数。
RotationHandle创建一个场景视图旋转手柄。
ScaleHandle创建一个场景视图缩放手柄。
ScaleSlider创建一个定向缩放滑动条。
ScaleValueHandle创建一个缩放单个浮点的 3D 手柄。
SetCamera设置当前摄像机,以便所有手柄和辅助图标均使用相应设置进行绘制。
ShouldRenderGizmos确定是否绘制 Gizmos。
Slider创建一个沿着一个轴移动的 3D 滑动条。
Slider2D创建一个沿两个轴定义的平面移动的 3D 滑动条。
SnapToGrid将每个 Transform.position 四舍五入到 EditorSnap.move 的最接近倍数。
SnapValue如果对齐为 active,则将 value 四舍五入到 snap 的最接近倍数。注意,snap 只能为正数。
SphereHandleCap绘制一个球体手柄。将此手柄传递给 handle 函数。
TransformHandle创建变换手柄。

委托

CapFunction用于绘制手柄的函数,如 Handles.RectangleCap。
SizeFunction用于根据手柄的当前位置获取手柄大小的委托类型。