Unity Editor 编辑器扩展 之 Gizmos

简单介绍一下Gizmos,在工程测试、编辑和Debug中用处还是挺多的。 目录

Gizmos 简单实用
Gizmos高级使用

Gizmos 简单实用
当我们想在Scene窗口对物体进行标记时,可以选选择画一个简单的图形

using UnityEngine;
using System.Collections;

public class GizmosTest : MonoBehaviour {


//  选中时绘制一个方块
    void OnDrawGizmosSelected ()
    {
        Gizmos.DrawCube (transform.position+Vector3.up, Vector3.one);

    }
//  绘制一个球
    void OnDrawGizmos()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere (transform.position, 0.4f);
    }
}

非选中效果:
Unity Editor 编辑器扩展 之 Gizmos_第1张图片
这里写图片描述

选中效果:
Unity Editor 编辑器扩展 之 Gizmos_第2张图片
这里写图片描述

Gizmos高级使用
当我们有一类物体都需要绘制Gizmos,需要表现比较复杂的效果时,可以在Editor文件夹下单独创建一个脚本
using UnityEngine;
using UnityEditor;

public class GizmosEditor
{
//  画一个cub线框,选中时为红色,补选中时为绿色
    [DrawGizmo (GizmoType.NonSelected | GizmoType.Active)]
    static void DrawExampleGizmos (GizmosTest example, GizmoType gizmoType)
    {
        var transform = example.transform;
        Gizmos.color = Color.green;
//          new Color32 (145, 244, 139, 210);

        //Gizmos选中时为红色
        if ((gizmoType & GizmoType.Active) == GizmoType.Active)
            Gizmos.color = Color.red;

        Gizmos.DrawWireCube (transform.position, transform.lossyScale);
    }

//  选中物体时画一个线框球
    [DrawGizmo (GizmoType.InSelectionHierarchy)]
    static void DrawExampleGizmos2 (GizmosTest example, GizmoType gizmoType)
    {
        var transform = example.transform;
        Gizmos.color = Color.blue;
        Gizmos.DrawWireSphere (transform.position, 2);
    }
}

显示效果非选中状态时:

Unity Editor 编辑器扩展 之 Gizmos_第3张图片
这里写图片描述

选中状态时:
Unity Editor 编辑器扩展 之 Gizmos_第4张图片
这里写图片描述

本文链接: http://write.blog.csdn.net/mdeditor#!postId=53444808

你可能感兴趣的:(Unity Editor 编辑器扩展 之 Gizmos)