Handles.DrawAAPolyLine
Declaration
public static void DrawAAPolyLine(Color[] colors, Vector3[] points);public static void DrawAAPolyLine(float width, Color[] colors, Vector3[] points);public static void DrawAAPolyLine(params Vector3[] points);public static void DrawAAPolyLine(float width, params Vector3[] points);public static void DrawAAPolyLine(Texture2D lineTex, params Vector3[] points);public static void DrawAAPolyLine(float width, int actualNumberOfPoints, params Vector3[] points);public static void DrawAAPolyLine(Texture2D lineTex, float width, params Vector3[] points);Параметры
| Параметр | Описание |
|---|---|
| lineTex | Текстура AA, используемая для рендеринга. |
| ширина | Ширина линии. |
| пункты | Список точек, из которых будет построена линия. |
| цвета | Цвета, применяемые к каждой точке. Должно соответствовать длине массива точек или actualNumberOfPoints, в зависимости от того, что меньше и больше нуля. |
| actualNumberOfPoints | Общее число вершин для рисования массива точек. Используйте это для сохранения многоразового буфера значений точек без необходимости частого изменения размера. |
Описание
Рисовать линию с выравниванием, указанную с массивом точек и шириной.
Примечание: Используйте HandleUtility.GetHandleSize там, где вы хотите иметь постоянные ручки размера экрана.
Примечание: Чтобы получить эффект сглаживания, используйте текстуру размером 1x2 пикселей с одним прозрачным белым пикселем и одним непрозрачным белым пикселем.
using UnityEditor; using UnityEngine; public class ArrowDrawer : MonoBehaviour { public void DrawArrow(Color color, float arrowThickness, float lineThickness, float shorten, Vector3 start, Vector3 end) { var length = (end - start).magnitude; if (length < 0.001f) return; var forward = (end - start) / length; var right = Vector3.Cross(Vector3.up, forward).normalized; var width = arrowThickness * 0.5f; var height = arrowThickness * 0.7f; start += forward * shorten; end -= forward * shorten; var arrowHead = new Vector3[3] { end, end - forward * height + right * width, end - forward * height - right * width }; var arrowLine = new Vector3[2] { start, end - forward * height }; Handles.color = color; Handles.DrawAAPolyLine(lineThickness, 2, arrowLine); Handles.DrawAAConvexPolygon(arrowHead); } void OnDrawGizmos() { DrawArrow(Color.white, 1f, 3f, 0f, transform.position, transform.position + transform.TransformDirection(Vector3.forward) * 4f); } }