在Scene下为带有”XX”的组件绘制gizmo
如下例子是为带游戏 “Light”的组件绘制gizmo
如下图所示,创建两个光线组件,当没有选则时Scene如下所示
当选择其中一个光组件时如下所示
在Eidtor文件夹中创建脚本 GimoTest, 引入“using UnityEditor;”
代码如下,写好代码之后保存就结束了,再Hierarchy中选择一个带有“Light”的组件即可,有时选择了带有“Light”的组件也看不到如上效果,需要滑动鼠标滚轮来调整远近来显示
创建一个类
using UnityEngine;
using System.Collections;
using UnityEditor;
public class GimoTest {
[DrawGizmo(GizmoType.SelectedOrChild)] //当自身或者子物体被选中时,自动调用如下方法
static void MyGizmo(Light light, GizmoType gizmoType) //参数1为“XX”组件,可以随意选,参数2 必须写,不用赋值
{
Gizmos.color = Color.red; //绘制时颜色
Gizmos.DrawSphere(light.transform.position, light.range); //参数1绘制坐标,参数2绘制半径
}
}
//绘制模式
[DrawGizmo(GizmoType.SelectedOrChild)] //当自身或子物体被选中
[DrawGizmo(GizmoType.Active)] //当被激活
[DrawGizmo(GizmoType.Selected)] //当自身被选中
[DrawGizmo(GizmoType.Selected | GizmoType.Active)] //当自身被选中或者被激活
如下为给带有 BoxCollider 的对象绘制gizmo
[DrawGizmo(GizmoType.Active)]
static void MyGizmo(BoxCollider boxCollider, GizmoType gizmoType) //参数1 为 组件类型,随意选,
{
Debug.Log("gizmos");
Gizmos.color = Color.red;
Gizmos.DrawSphere(boxCollider.transform.position, 5); //参数1 为坐标,参数2 为半径
}