Version: 2021.3

Handles.RectangleHandleCap

切换到手册
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.Layout 和 EventType.Repaint 事件。

描述

绘制一个矩形手柄。将此手柄传递给 handle 函数。

在 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 ); } } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961