Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Handles.DrawLine

Declaration

public static void DrawLine(Vector3 p1, Vector3 p2, float thickness = 0.0f);

Параметры

Параметр Описание
p1 Положение конечной точки первой линии в мировом пространстве.
p2 Положение конечной точки второй линии в мировом пространстве.
толщина Толщина линии в точках UI (нулевая толщина рисует линию одного пикселя).

Описание

Чертает линию от p1 до p2.

Свойства Handles.color и Handles.matrix окрашивают и дополнительно преобразуют положение линии. Unity игнорирует DrawLine (то есть ничего не происходит), когда текущий тип события GUI не является EventType.Repaint.


Нарисовать линию в представлении Scene.

Ниже приведен пример скрипта Редактора, который рисует линии в SceneView до GameObjects, перечисленных в сценарии.

// Draw lines to the connected game objects that a script has.
// If the target object doesnt have any game objects attached
// then it draws a line from the object to (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); } } } }

Пример скрипта для присоединения к GameObject, который будет действовать как handler:

using UnityEngine;

public class ConnectedObjectsExampleScript : MonoBehaviour { public GameObject[] objs = null; }

Линия thickness может быть установлена по желанию. Нулевая толщина рисует линию в один пиксель. Большие значения толщины выражают толщину линии в UI точках. Например, толщина 1.0 может составлять два пикселя на экране при увеличении на 200% (см. EditorGUIUtility.pixelsPerPoint).


Линии различной толщины.

using UnityEngine;
using UnityEditor;

public class ExampleScript : MonoBehaviour { }

// Displays lines of various 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 linePos = position + Vector3.right * (i * 0.5f); Handles.DrawLine(linePos, linePos + Vector3.up, i); } } }

Дополнительные ресурсы: ,Handles.lineThickness,, ,Handles.DrawLines,, ,Handles.DrawPolyLine,, ,Handles.DrawWireDisc,.