Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


DrawAAPolyLine

Draw anti-aliased line specified with point array and width.
Read time 7 minutesLast updated 9 days ago

Definition

  • Type: Method
  • Namespace: UnityEditor
  • Assembly: UnityEditor

DrawAAPolyLine(Color[], Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(Color[] colors, Vector3[] points)

Parameters

colors

The colors to apply to each point. Must match the length of the points array or actualNumberOfPoints, whichever is lower and greater than zero.

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}

DrawAAPolyLine(float, Color[], Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(float width, Color[] colors, Vector3[] points)

Parameters

width

The width of the line.

colors

The colors to apply to each point. Must match the length of the points array or actualNumberOfPoints, whichever is lower and greater than zero.

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}

DrawAAPolyLine(Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(params Vector3[] points)

Parameters

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}

DrawAAPolyLine(float, Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(float width, params Vector3[] points)

Parameters

width

The width of the line.

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}

DrawAAPolyLine(Texture2D, Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(Texture2D lineTex, params Vector3[] points)

Parameters

lineTex

The AA texture used for rendering.

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}

DrawAAPolyLine(float, int, Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(float width, int actualNumberOfPoints, params Vector3[] points)

Parameters

width

The width of the line.

actualNumberOfPoints

The total number of vertices to draw of the points array. Use this to keep a reusable buffer of point values without the need to resize frequently.

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}

DrawAAPolyLine(Texture2D, float, Vector3[])

Draw anti-aliased line specified with point array and width.
public static void DrawAAPolyLine(Texture2D lineTex, float width, params Vector3[] points)

Parameters

lineTex

The AA texture used for rendering.

width

The width of the line.

points

List of points to build the line from.

Remarks

Note: Use HandleUtility.GetHandleSize where you might want to have constant screen-sized handles.
Note: To get an anti-aliased effect use a texture that is 1x2 pixels with one transparent white pixel and one opaque white pixel.

Examples

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); }}