28.Handles文本线段虚线

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

×

喜欢就点赞,疼爱就打赏