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

Handles.ArrowHandleCap

建议修改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static void ArrowHandleCap(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 事件中,绘制句柄形状。

场景视图中的箭头句柄帽。

将以下脚本添加到您的 Assets 文件夹中,命名为 ArrowExample.cs,并将 ArrowExample 组件添加到场景中的某个对象。

using UnityEngine;

public class ArrowExample : MonoBehaviour {}

将以下脚本添加到 Assets/Editor 中,命名为 ArrowExampleEditor.cs,并选择具有 ArrowExample 组件的对象。

using UnityEditor;
using UnityEngine;

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

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