28.Scene窗口拓展-Handles-文本线段虚线
28.1 知识点
Editor中的target成员
在编辑器脚本中可以利用继承Editor基类中的target成员获取到拓展的组件对象。
[CustomEditor(typeof(TestSceneMono))]
public class TestSceneMonoEditor : Editor
{
private TestSceneMono testSceneMono;
private void OnEnable()
{
testSceneMono = target as TestSceneMono;
}
private void OnSceneGUI()
{
// 选中挂载TestSceneMono的对象会打印
Debug.Log("Scene窗口拓展相关逻辑");
}
}
Handles中的颜色控制
再调用Handles中的绘制API之前,设置colors颜色属性。比如设置成绿色。
Handles.color = new Color(0, 1, 1, 0.3f);
private void OnSceneGUI()
{
// 颜色
Handles.color = new Color(0, 1, 0, 1f);
}
Handles中的文本控件
使用Handles.Label绘制文本,让文本跟着挂载脚本的游戏对象动,注意文本是不受绘制颜色控制的,要自己设置GUIstyle。
private void OnSceneGUI()
{
// 颜色
Handles.color = new Color(0, 1, 0, 1f);
// 文本
Handles.Label(testSceneMono.transform.position, "测试文本显示");
}
Handles中的线段控件
使用Handles.DrawLine绘制线段,会受到设置颜色影响。
private void OnSceneGUI()
{
// 颜色
Handles.color = new Color(0, 1, 0, 1f);
// 线段
Handles.DrawLine(testSceneMono.transform.position, testSceneMono.transform.position + testSceneMono.transform.right * 5, 5);
}
Handles中的虚线控件
使用Handles.DrawDottedLine绘制虚线。
private void OnSceneGUI()
{
// 虚线
Handles.color = new Color(0, 0, 1, 1f);
Handles.DrawDottedLine(testSceneMono.transform.position, testSceneMono.transform.position + testSceneMono.transform.forward * 5, 5);
}
28.2 知识点代码
Lesson28_Scene窗口拓展_Handles_文本线段虚线
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson28_Scene窗口拓展_Handles_文本线段虚线 : MonoBehaviour
{
void Start()
{
#region 知识点回顾 Editor中的target成员
//我们可以利用继承Editor基类中的target成员获取到拓展的组件对象
#endregion
#region 知识点一 Handles中的颜色控制
//再调用Handles中的绘制API之前 设置颜色即可
//Handles.color = new Color(0, 1, 1, 0.3f);
#endregion
#region 知识点二 Handles中的文本控件
//Handles.Label(显示位置, 文本内容);
#endregion
#region 知识点三 Handles中的线段控件
//Handles.DrawLine(起点, 终点, 粗细);
#endregion
#region 知识点四 Handles中的虚线控件
//Handles.DrawDottedLine(起点, 终点, 粗细);
#endregion
}
}
TestSceneMonoEditor
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(TestSceneMono))]
public class TestSceneMonoEditor : Editor
{
private TestSceneMono testSceneMono;
private void OnEnable()
{
testSceneMono = target as TestSceneMono;
}
private void OnSceneGUI()
{
//选中挂载TestSceneMono的对象会打印
Debug.Log("Scene窗口拓展相关逻辑");
#region Lesson28_Scene窗口拓展_Handles_文本线段虚线
//颜色
Handles.color = new Color(0, 1, 0, 1f);
//文本
Handles.Label(testSceneMono.transform.position, "测试文本显示");
//线段
Handles.DrawLine(testSceneMono.transform.position,
testSceneMono.transform.position + testSceneMono.transform.right * 5, 5);
//虚线
Handles.color = new Color(0, 0, 1, 1f);
Handles.DrawDottedLine(testSceneMono.transform.position,
testSceneMono.transform.position + testSceneMono.transform.forward * 5, 5);
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com