Handles.DrawBezier
Declaration
public static void DrawBezier(Vector3 startPosition, Vector3 endPosition, Vector3 startTangent, Vector3 endTangent, Color color, Texture2D texture, float width);Параметры
| Параметр | Описание |
|---|---|
| startPosition | Начальная точка линии Безье. |
| endPosition | Конечная точка линии Безье. |
| startTangent | Начальный касатель прямой Безье. |
| endTangent | Конечный касатель прямой Безье. |
| цвет | Цвет, используемый для линии Безье. |
| текстура | Текстура, используемая для рисования линии Безье. |
| ширина | Ширина линии Безье. |
Описание
Нарисуйте текстурированную линию Безье через начальную и конечную точки с заданными касаниями.
Для получения эффекта сглаживания используйте текстуру размером 1x2 пикселей с одним прозрачным белым пикселем и одним непрозрачным белым пикселем. Кривая Безье будет прорисована с помощью этой текстуры.
Примечание: Используйте HandleUtility.GetHandleSize там, где вы хотите иметь постоянные ручки размера экрана.
Линия Безье в Виде Scene.
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); } }
И скрипт, прикрепленный к этому Handle:
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); }