版本:Unity 6 (6000.0)
语言English
  • C#

Handles.DrawLine

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议的更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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

参数

p1 第一条线端点在世界空间中的位置。
p2 第二条线端点在世界空间中的位置。
thickness 线条粗细(以UI点为单位)(零粗细绘制单像素线条)。

描述

p1绘制到p2的线条。

Handles.colorHandles.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); } } }