场景视图中的自定义 3D GUI 控件和绘制操作。
        手柄是 Unity 用于操作场景视图中的项的 3D 控件。内置的 Handle GUI 有很多,如通过变换组件定位、缩放和旋转对象的熟悉的工具。不过,您也可以自行定义 Handle GUI,以与自定义组件编辑器结合使用。此类 GUI 对于编辑以程序方式生成的场景内容、“不可见”项和相关对象的组(如路径点和位置标记)非常实用。
您还可以使用覆盖在场景视图上的 2D 按钮和其他控件来补充场景中的 3D 手柄 GUI。这是通过将标准 Unity GUI 调用封装在 Editor.OnSceneGUI 函数中的 Handles.BeginGUI 和 Handles.EndGUI 对中完成的。可以使用 HandleUtility.GUIPointToWorldRay 和 HandleUtility.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 | 手柄是否亮起? | 
| lineThickness | Retrieves the user preference setting that controls the thickness of tool handle lines. (Read Only) | 
| matrix | 所有手柄操作的矩阵。 | 
| preselectionColor | 用于突出显示鼠标指针下当前未选中的手柄的颜色。 | 
| secondaryColor | 用于一般物体的柔和色。 | 
| selectedColor | 用于当前处于活动状态的手柄的颜色。 | 
| UIColliderHandleColor | Color 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 的子集(在后处理之前或之后)。 | 
| DrawLine | Draws a line from p1 to p2. | 
| DrawLines | 绘制一系列线段。 | 
| DrawPolyLine | 绘制一条穿过 points 列表的线。 | 
| DrawSelectionFrame | 绘制一个面向选择框的摄像机。 | 
| DrawSolidArc | 在 3D 空间中绘制一个圆扇形(饼图)。 | 
| DrawSolidDisc | 在 3D 空间中绘制一个实心平面圆盘。 | 
| DrawSolidRectangleWithOutline | 在 3D 空间中绘制一个实心轮廓矩形。 | 
| DrawTexture3DSDF | Draws a 3D texture using Signed Distance Field rendering mode in 3D space. | 
| DrawTexture3DSlice | Draws a 3D texture using Slice rendering mode in 3D space. | 
| DrawTexture3DVolume | Draws a 3D texture using Volume rendering mode in 3D space. | 
| DrawWireArc | Draws a circular arc in 3D space. | 
| DrawWireCube | 使用 center 和 size 绘制一个线框盒体。 | 
| DrawWireDisc | Draws 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 | 用于根据手柄的当前位置获取手柄大小的委托类型。 |