Объявление
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 UnityEngine;
using UnityEditor;
[CustomEditor(typeof(BezierExample))]
public class DrawBezierExample : Editor
{
private void OnSceneViewGUI(SceneView sv)
{
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);
Handles.DrawBezier(be.startPoint, be.endPoint, be.startTangent, be.endTangent, Color.red, null, 2f);
}
void OnEnable()
{
Debug.Log("OnEnable");
SceneView.onSceneGUIDelegate += OnSceneViewGUI;
}
void OnDisable()
{
Debug.Log("OnDisable");
SceneView.onSceneGUIDelegate -= OnSceneViewGUI;
}
}
И скрипт, прикрепленный к этому дескриптору:
using UnityEngine;
public class BezierExample : MonoBehaviour
{
public Vector3 startPoint = new Vector3(-0.0f, 0.0f, 0.0f);
public Vector3 endPoint = new Vector3(-2.0f, 2.0f, 0.0f);
public Vector3 startTangent = Vector3.zero;
public Vector3 endTangent = Vector3.zero;
}