Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Handles.DrawWireArc

Объявление

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.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3