Объявление
public static void DrawWireArc(Vector3 center, Vector3 normal, Vector3 from, float angle, float radius, float thickness = 0.0f);Параметры
center | Центр круга в мировом пространстве. |
normal | Нормаль круга в мировом пространстве. |
from | Направление точки на окружности относительно центра, где начинается дуга. |
angle | Угол дуги в градусах. |
radius | Радиус окружности в мировых космических единицах. |
thickness | Толщина линии в точках пользовательского интерфейса (нулевая толщина рисует линию в один пиксель). |
Описание
Рисует дугу окружности в трехмерном пространстве.
Свойства Handles.color и Handles.matrix раскрашивают и дополнительно преобразуют положение дуги. Unity игнорирует DrawWireArc
(то есть ничего не происходит), если текущий тип события GUI не Repaint.

using UnityEditor;
using UnityEngine;
using System.Collections;
//this class should exist somewhere in your project
public class WireArcExample : MonoBehaviour
{
public float shieldArea;
}
// Create a 180 degrees wire arc with a ScaleValueHandle attached to the disc
// that lets you modify the "shieldArea" value in the WireArcExample
[CustomEditor(typeof(WireArcExample))]
public class DrawWireArc : Editor
{
void OnSceneGUI()
{
Handles.color = Color.red;
WireArcExample myObj = (WireArcExample)target;
Handles.DrawWireArc(myObj.transform.position, myObj.transform.up, -myObj.transform.right, 180, myObj.shieldArea);
myObj.shieldArea = (float)Handles.ScaleValueHandle(myObj.shieldArea, myObj.transform.position + myObj.transform.forward * myObj.shieldArea, myObj.transform.rotation, 1, Handles.ConeHandleCap, 1);
}
}
Вы можете использовать HandleUtility.GetHandleSize, чтобы вычислить подходящий размер дескриптора манипулятора.
Линия дуги толщина
может быть установлена дополнительно. Нулевая толщина рисует линию в один пиксель. Большие значения толщины выражают толщину линии в точках пользовательского интерфейса. Например, толщина 1,0 может соответствовать ширине экрана в два пикселя, если масштаб отображения равен 200 % (см. EditorGUIUtility.pixelsPerPoint).

using UnityEngine;
using UnityEditor;
public class ExampleScript : MonoBehaviour
{
}
// Display arcs of various angles and thickness in the scene view
[CustomEditor(typeof(ExampleScript))]
public class ExampleEditor : Editor
{
public void OnSceneGUI()
{
var t = target as ExampleScript;
var tr = t.transform;
var position = tr.position;
Handles.color = Color.yellow;
for (int i = 0; i < 10; ++i)
{
var center = position;
var start = Vector3.left;
var normal = Vector3.forward;
var radius = 3 - i * 0.3f;
var angle = 40 + 30 * i;
Handles.DrawWireArc(center, normal, start, angle, radius, i);
}
}
}
Смотрите так же: Handles.lineThickness, Handles.DrawLine, Handles.DrawSolidArc, Handles.DrawWireDisc.