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

Handles.RectangleHandleCap

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static void RectangleHandleCap(int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType);

参数

controlID 句柄的控制 ID。
position Handles.matrix 空间中句柄的位置。
rotation Handles.matrix 空间中句柄的旋转。
size Handles.matrix 空间中句柄的大小。如果你希望常态屏幕空间大小,请使用 HandleUtility.GetHandleSize
eventType 句柄要操作的事件类型。设计上它处理 EventType.LayoutEventType.Repaint 事件。

说明

绘制一个矩形句柄。将它传递给句柄函数。

EventType.Layout 事件上,计算句柄到鼠标的距离并相应调用 HandleUtility.AddControl

EventType.Repaint 事件上,绘制句柄形状。

场景视图中的矩形句柄上限。

将以下脚本作为 RectangleExample.cs 添加到 Assets 文件夹,并将 RectangleExample 组件添加到场景中的对象。

using UnityEngine;

public class RectangleExample : MonoBehaviour {}

将以下脚本作为 RectangleExampleEditor.cs 添加到 Assets/Editor,然后选择具有 RectangleExample 组件的对象。

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(RectangleExample))] public class RectangleExampleEditor : Editor { float size = 1f;

protected virtual void OnSceneGUI() { if (Event.current.type == EventType.Repaint) { Transform transform = ((RectangleExample)target).transform; Handles.color = Handles.xAxisColor; Handles.RectangleHandleCap( 0, transform.position + new Vector3(3f, 0f, 0f), transform.rotation * Quaternion.LookRotation(Vector3.right), size, EventType.Repaint ); Handles.color = Handles.yAxisColor; Handles.RectangleHandleCap( 0, transform.position + new Vector3(0f, 3f, 0f), transform.rotation * Quaternion.LookRotation(Vector3.up), size, EventType.Repaint ); Handles.color = Handles.zAxisColor; Handles.RectangleHandleCap( 0, transform.position + new Vector3(0f, 0f, 3f), transform.rotation * Quaternion.LookRotation(Vector3.forward), size, EventType.Repaint ); } } }