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

Handles

UnityEditor 中的类

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

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

关闭

取消

描述

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

Handles 是 Unity 用于在场景视图中操作项目的 3D 控件。有许多内置的 Handle GUI,例如熟悉的用于通过 Transform 组件定位、缩放和旋转对象的工具。但是,也可以定义自己的 Handle GUI 以与自定义组件编辑器一起使用。此类 GUI 可以成为编辑程序生成场景内容、“不可见”项目和相关对象组(例如路点和位置标记)的非常有用的方法。

您还可以使用叠加在场景视图上的 2D 按钮和其他控件来补充场景中的 3D Handle GUI。这是通过在 Handles.BeginGUIHandles.EndGUI 对内包含标准 Unity GUI 调用来完成的,这些调用位于 Editor.OnSceneGUI 函数中。您可以使用 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设置句柄的颜色。颜色是持久状态,会影响设置后绘制的任何句柄。使用 DrawingScope 为一组句柄设置颜色,而不会影响其他句柄的颜色。
elementColor编辑模式下对象的默认颜色。
elementPreselectionColor在自定义编辑模式下,用于突出显示鼠标指针下当前未选中的对象的颜色。
elementSelectionColor编辑模式下所选对象的颜色。
inverseMatrix所有句柄操作的矩阵的逆矩阵。
lighting句柄是否被照亮?
lineThickness检索控制工具句柄线粗细的用户首选项设置。(只读)
matrix所有句柄操作的矩阵。HandleUtility 和 Handles 中的函数使用此矩阵来转换控件。
preselectionColor用于突出显示鼠标指针下当前未选中的句柄的颜色。
secondaryColor用于一般事物的柔和颜色。
selectedColor用于当前活动句柄的颜色。
UIColliderHandleColorUnity UI 的填充可视化的颜色。
xAxisColor用于操作某物 X 坐标的句柄的颜色。
yAxisColor用于操作某物 Y 坐标的句柄的颜色。
zAxisColor用于操作某物 Z 坐标的句柄的颜色。
zTest句柄的 zTest。

属性

currentCamera获取或设置当前正在渲染的摄像机。

静态方法

ArrowHandleCap绘制类似于移动工具使用的箭头。
BeginGUI在 3D 句柄 GUI 内开始一个 2D GUI 块。
Button创建一个 3D 按钮。
CircleHandleCap绘制一个圆形句柄。将其传递给句柄函数。
ClearCamera清除摄像机。
ConeHandleCap绘制一个圆锥形句柄。将其传递给句柄函数。
CubeHandleCap绘制一个立方体句柄。将其传递给句柄函数。
CylinderHandleCap绘制一个圆柱体句柄。将其传递给句柄函数。
Disc创建一个可以使用鼠标拖动的 3D 圆盘。
DotHandleCap绘制一个点句柄。将其传递给句柄函数。
DrawAAConvexPolygon使用点数组绘制抗锯齿凸多边形。
DrawAAPolyLine使用点数组和宽度绘制抗锯齿线。
DrawBezier通过具有给定切线的起点和终点绘制纹理贝塞尔曲线。
DrawCamera在矩形内绘制摄像机。
DrawDottedLine从 p1 到 p2 绘制一条虚线。
DrawDottedLines绘制虚线段列表。
DrawGizmos为指定的摄像机绘制 Gizmos。
DrawLine从 p1 到 p2 绘制一条线。
DrawLines绘制线段列表。
DrawOutline在场景视图中围绕指定的 GameObject 绘制轮廓。
DrawPolyLine绘制穿过点列表的线。
DrawSelectionFrame在指定位置和旋转处创建具有指定大小的正方形。
DrawSolidArc在 3D 空间中绘制一个圆形扇形(扇形)。
DrawSolidDisc在 3D 空间中绘制一个实心扁平圆盘。
DrawSolidRectangleWithOutline在 3D 空间中绘制一个实心带轮廓的矩形。
DrawTexture3DSDF在 3D 空间中使用有符号距离场渲染模式绘制 3D 纹理。
DrawTexture3DSlice在 3D 空间中使用切片渲染模式绘制 3D 纹理。
DrawTexture3DVolume在 3D 空间中使用体积渲染模式绘制 3D 纹理。
DrawWireArc在 3D 空间中绘制一个圆弧。
DrawWireCube绘制一个带有中心和大小的线框框。
DrawWireDisc在 3D 空间中绘制扁平圆盘的轮廓。
EndGUI结束一个 2D GUI 块并返回到 3D 句柄 GUI。
FreeMoveHandle创建一个不受约束的移动句柄。
FreeRotateHandle创建一个不受约束的旋转句柄。
GetMainGameViewSize获取主游戏视图的宽度和高度。
Label为在 3D 空间中定位的句柄创建文本标签。
MakeBezierPoints返回一个表示贝塞尔曲线的点数组。
PositionHandle创建一个位置句柄。
RadiusHandle创建一个场景视图半径句柄。
RectangleHandleCap绘制一个矩形句柄。将其传递给句柄函数。
RotationHandle创建一个场景视图旋转句柄。
ScaleHandle创建一个场景视图缩放句柄。
ScaleSlider创建一个方向缩放滑块。
ScaleValueHandle创建一个缩放单个浮点数的 3D 句柄。
SetCamera设置当前摄像机,以便所有 Handles 和 Gizmos 都使用其设置进行绘制。
ShouldRenderGizmos确定是否绘制 Gizmos。
Slider创建一个沿一个轴移动的 3D 滑块。
Slider2D创建一个沿由两个轴定义的平面移动的 3D 滑块。
SnapToGrid将每个 Transform.position 或 Vector3 四舍五入到 EditorSnapSettings.gridSize 的最近倍数。
SnapValue如果启用了捕捉,则将值四舍五入到捕捉的最近倍数。请注意,捕捉只能为正数。
SphereHandleCap绘制一个球体句柄。将其传递给句柄函数。
TransformHandle创建一个变换句柄。

委托

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