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

Handles.SphereHandleCap

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但我们会阅读用户提出的每条建议的更改,并会在适用时进行更新。

关闭

提交失败

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

关闭

取消

声明

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

参数

controlID 控制手柄的 ID。
position 手柄在 Handles.matrix 空间中的位置。
rotation 手柄在 Handles.matrix 空间中的旋转。
eventType 手柄进行操作的事件类型。根据设计,它处理 EventType.LayoutEventType.Repaint 事件。
size 手柄在 Handles.matrix 空间中的大小。如果您希望有固定的屏幕空间大小,请使用 HandleUtility.GetHandleSize

描述

绘制一个球形手柄。将其传递到 handle 函数中。

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

EventType.Repaint 事件中,绘制手柄形状。

场景视图中的球形手柄上限。

将以下脚本添加到您的“资产”文件夹中,作为 SphereExample.cs,并将 SphereExample 组件添加到一个场景中的对象。

using UnityEngine;

public class SphereExample : MonoBehaviour {}

将以下脚本添加到“资产/编辑器”中的 SphereExampleEditor.cs,并选择包含 SphereExample 组件的对象。

using UnityEditor;
using UnityEngine;

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

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