UEDL8-1——文本、线段、虚线
本章代码关键字
1 2 3 4 5 6
| Handles.color Handles.Label() Handles.DrawLine() Handles.DrawLines() Handles.DrawDottedLine() Handles.DrawDottedLines()
|
Editor中的target成员
我们可以利用继承Editor基类中的target成员获取到拓展的组件对象
例如我们要获取Lesson26依附的GameObject的位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| using UnityEditor; using UnityEngine;
[CustomEditor(typeof(Lesson26))] public class Lesson26Editor : Editor { private Lesson26 targetObj;
private void OnEnable() { targetObj = target as Lesson26; }
private void OnSceneGUI() { Debug.Log("Scene窗口拓展相关逻辑"); Debug.Log("当前依附对象的位置信息" + targetObj.transform.position); } }
|
Handles中的颜色控制
在调用Handles中的绘制API之前 可以设置其绘制出来的颜色 Handles.color = new Color(0, 1, 1, 0.3f);
该方法单独执行无效果,需要配合其他方法一起执行才能看出效果,如下面的绘制线段
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private Lesson26 targetObj;
private void OnEnable() { targetObj = target as Lesson26; }
private void OnSceneGUI() { Handles.color = new Color(1f, 0f, 0f, 0.5f); Handles.DrawLine(targetObj.transform.position, targetObj.transform.position + targetObj.transform.forward * 5); }
|
显示效果:

Handles中的文本控件
Handles.Label(显示位置, 文本内容);
- 参数一:显示位置
- 参数二:显示文本内容(可改为
GUIContent)
- 参数三:
GUIStyle(可选)
该方法绘制的文本颜色不受Handles.color设置的影响,如要设置颜色需要使用GUIStyle参数
1 2 3 4 5 6 7 8 9 10 11 12
| private Lesson26 targetObj;
private void OnEnable() { targetObj = target as Lesson26; }
private void OnSceneGUI() { Handles.Label(Vector3.zero, "测试文本显示(位置固定)"); Handles.Label(targetObj.transform.position, "测试文本显示(跟随目标)"); }
|
显示效果:

Handles中的线段控件
Handles.DrawLine(起点, 终点, 粗细);
- 参数一:起点
- 参数二:终点
- 参数三:线段粗细(可选)
还有一种绘制连接多个点线段的方法Handles.DrawLines():
- 参数一:点的数组
- 参数二:表示线段起点和终点的成对索引的列表(可选,不填入则直接将参数一作为线段起点和终点的成对点的数组)
假设要绘制线段方向为对象面朝向,同时长度为5的线段(绘制的线段颜色受到Handles.color设置的影响)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private Lesson26 targetObj;
private void OnEnable() { targetObj = target as Lesson26; }
private void OnSceneGUI() { Handles.color = new Color(0f, 1f, 0f, 1f); Handles.DrawLine(targetObj.transform.position, targetObj.transform.position + targetObj.transform.forward * 5, 2); }
|

Handles中的虚线控件
Handles.DrawDottedLine(起点, 终点, 粗细);
- 参数一:起点
- 参数二:终点
- 参数三:虚线中的线段每一段长度及其间距的大小(以像素为单位)
假设要绘制线段方向为对象面朝向,同时长度为3,虚线每段线段及其间隔为10像素的虚线(绘制的线段颜色受到Handles.color设置的影响)
1 2 3 4 5 6 7 8 9 10 11 12
| private Lesson26 targetObj;
private void OnEnable() { targetObj = target as Lesson26; }
private void OnSceneGUI() { Handles.color = new Color(0f, 0f, 1f, 1f); Handles.DrawDottedLine(targetObj.transform.position, targetObj.transform.position + targetObj.transform.forward * 3, 10); }
|
显示效果:

还有一种绘制连接多个点线段的方法Handles.DrawDottedLines():
- 参数一:点的数组
- 参数二:表示线段起点和终点的成对索引的列表(可选,不填入则直接将参数一直接作为线段起点和终点的成对点的数组)
- 参数三:虚线中的线段每一段长度及其间距的大小(以像素为单位)