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

Handles.DrawBezier

建议更改

成功!

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

关闭

提交失败

由于某些原因,您建议的更改无法提交。请在几分钟后<a>重试</a>。感谢您拨冗帮助我们提升 Unity 文档的质量。

关闭

取消

声明

public static void DrawBezier(Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, Color color, Texture2D texture, float width);

参数

startPosition 贝塞尔线段的起始点。
endPosition 贝塞尔线段的结束点。
startTangent 贝塞尔线段的开始切线。
endTangent 贝塞尔线段的结束切线。
color 用于绘制贝塞尔线段的颜色。
texture 用于绘制贝塞尔线段的纹理。
width 贝塞尔线段的宽度。

说明

使用给定的切线,通过开始和结束点绘制带纹理的贝塞尔线段。

要获得抗锯齿效果,请使用一个 1x2 像素的纹理,该纹理包含一个透明的白像素和一个不透明的白像素。将使用该纹理扫过贝塞尔曲线。

注意:在可能需要保持屏幕大小不变的控制点上使用 HandleUtility.GetHandleSize


场景视图中的贝塞尔线段。

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(BezierExample))] public class DrawBezierExample : Editor { void OnSceneGUI() { BezierExample be = target as BezierExample;

be.startPoint = Handles.PositionHandle(be.startPoint, Quaternion.identity); be.endPoint = Handles.PositionHandle(be.endPoint, Quaternion.identity); be.startTangent = Handles.PositionHandle(be.startTangent, Quaternion.identity); be.endTangent = Handles.PositionHandle(be.endTangent, Quaternion.identity);

// Visualize the tangent lines Handles.DrawDottedLine(be.startPoint, be.startTangent, 5); Handles.DrawDottedLine(be.endPoint, be.endTangent, 5);

Handles.DrawBezier(be.startPoint, be.endPoint, be.startTangent, be.endTangent, Color.red, null, 5f); } }

以及附加到该控制点的脚本

using UnityEngine;

public class BezierExample : MonoBehaviour { public Vector3 startPoint = new Vector3(-5f, 2f, 0f); public Vector3 endPoint = new Vector3(5f, -2f, 0f); public Vector3 startTangent = new Vector3(0f, 2f, 0f); public Vector3 endTangent = new Vector3(0f, -2f, 0f); }