当前位置 博文首页 > 和我一起学习:Unity在编辑器中的Scene面板中绘制指定的区域

    和我一起学习:Unity在编辑器中的Scene面板中绘制指定的区域

    作者:[db:作者] 时间:2021-08-22 21:16

    为了方便的调试数据,将数据可视化是个不错的选择。比如怪物的攻击范围,如果只修改一个半径的数值,没有相应的东西进行对比,也不清楚这个数值到底合不合适,所以我们可以根据这个半径绘制一个球或者圆,攻击范围一目了然

    何时绘制?

    我们不希望任何时候都绘制这个范围,如果有好多怪物,每个都绘制一个范围,将得不偿失,不仅拖慢我们的运行速度,而且看起来很乱。所以只在选中当前物体时,才进行绘制比较好

    MonoBehaviour.OnDrawGizmosSelected()
    该函数在选中物体时执行,重写该函数即可绘制我们的图形

    怎么绘制?

    Gizmos

    设置绘制的图形颜色
    Gizmos.color

    • 青色:Color.cyan
    • 灰色:Color.gray
    • 黄色:Color.yellow
    • 洋红色:Color.magenta
    • 完全透明:Color.clear
    • 自定义:new Color(1, 1, 0, 0.75F);

    使用Gizmos的静态方法


    绘制球体
    public static void DrawSphere (Vector3 center, float radius);
    参数:

    • center:球心坐标
    • radius:球的半径

    绘制线
    public static void DrawLine (Vector3 from, Vector3 to);
    参数:

    • from:起点坐标
    • to:终点坐标

    Handles

    需要引入命名空间 UnityEditor
    使用Handles的静态方法

    使用Handles.color属性设置绘制的颜色


    绘制圆
    public static void DrawSolidDisc (Vector3 center, Vector3 normal, float radius);
    参数:

    • center:圆心坐标
    • normal:圆的法向量(通过法向量控制圆所在的不同平面)
    • radius:圆的半径

    绘制圆弧
    public static void DrawSolidArc (Vector3 center, Vector3 normal, Vector3 from, float angle, float radius);
    参数:

    • center:圆弧中心坐标
    • normal:圆弧的法向量,可以控制圆弧的绘制方向(左手法则判断)
    • from:绘制的起点坐标
    • angle:绘制角度
    • radius:圆弧半径
    cs