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