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

Handles.CylinderHandleCap

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public static void CylinderHandleCap(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 文件夹中,命名为 CylinderExample.cs,并将 CylinderExample 组件添加到场景中的某个对象。

using UnityEngine;

public class CylinderExample : MonoBehaviour {}

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

using UnityEditor;
using UnityEngine;

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

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