Параметры
p1 | Положение конечной точки первой линии в мировом пространстве. |
p2 | Положение конечной точки второй линии в мировом пространстве. |
thickness | Толщина линии в точках пользовательского интерфейса (нулевая толщина рисует линию в один пиксель). |
Описание
Рисует линию от p1
до p2
.
Свойства Handles.color и Handles.matrix раскрашивают и дополнительно преобразуют положение строки. Unity игнорирует DrawLine
(то есть ничего не происходит), если текущий тип события GUI не Repaint.

// Рисуем линии к связанным игровым объектам, которые есть у скрипта.
// Если к целевому объекту не прикреплены какие-либо игровые объекты
// затем он рисует линию от объекта до (0, 0, 0).
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(ConnectedObjectsExampleScript))]
class ConnectLineHandleExampleScript : Editor
{
void OnSceneGUI()
{
ConnectedObjectsExampleScript connectedObjects = target as ConnectedObjectsExampleScript;
if (connectedObjects.objs == null)
return;
Vector3 center = connectedObjects.transform.position;
for (int i = 0; i < connectedObjects.objs.Length; i++)
{
GameObject connectedObject = connectedObjects.objs[i];
if (connectedObject)
{
Handles.DrawLine(center, connectedObject.transform.position);
}
else
{
Handles.DrawLine(center, Vector3.zero);
}
}
}
}
И скрипт, прикрепленный к этому дескриптору:
using UnityEngine;
public class ConnectedObjectsExampleScript : MonoBehaviour
{
public GameObject[] objs = null;
}
Необязательная установка толщины
линии. Нулевая толщина рисует линию в один пиксель. Большие значения толщины выражают толщину линии в точках пользовательского интерфейса. Например, толщина 1,0 может соответствовать ширине экрана в два пикселя, если масштаб отображения составляет 200 % (см. EditorGUIUtility.pixelsPerPoint).

using UnityEngine;
using UnityEditor;
public class ExampleScript : MonoBehaviour
{
}
// Отображает линии различной толщины в виде сцены
[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 linePos = position + Vector3.right * (i * 0.5f);
Handles.DrawLine(linePos, linePos + Vector3.up, i);
}
}
}
Смотрите так же: Handles.lineThickness, Handles.DrawLines, Handles.DrawPolyLine, Handles.DrawWireDisc.