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

Handles.CubeHandleCap

提出修改建议

成功!

感谢你帮助我们提高 Unity 文档的质量。虽然我们不能接受所有提交,但我们会阅读每个用户的建议修改,并根据需要做出更新。

关闭

提交失败

由于某种原因,你的建议修改无法提交。请稍后重试(几分钟后再试)。感谢你花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

场景视图中的立方体句柄 Caps。

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

using UnityEngine;

public class CubeExample : MonoBehaviour {}

将以下脚本作为 CubeExampleEditor.cs 添加到 Assets/Editor 并选择具有 CubeExample 组件的对象。

using UnityEditor;
using UnityEngine;

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

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