p1 | 第一条线端点在世界空间中的位置。 |
p2 | 第二条线端点在世界空间中的位置。 |
thickness | 线条粗细(以UI点为单位)(零粗细绘制单像素线条)。 |
从p1
绘制到p2
的线条。
该Handles.color和Handles.matrix属性着色并另外转换线条位置。当当前GUI事件类型不是Repaint时,Unity会忽略DrawLine
(即,不会发生任何事情)。
在场景视图中绘制线条。
以下是一个编辑器脚本示例,该脚本在场景视图中为脚本中列出的游戏对象绘制线条。
// 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); } } } }
要附加到用作句柄的游戏对象的示例脚本
using UnityEngine;
public class ConnectedObjectsExampleScript : MonoBehaviour { public GameObject[] objs = null; }
线条thickness
可以根据需要设置。零粗细绘制单像素线条。较大的粗细值表示以UI点为单位的线条粗细。例如,如果显示缩放比例为200%,则粗细为1.0的线条在屏幕上可能为两个像素宽(请参阅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); } } }