方法一
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GizmoExample : MonoBehaviour
{
private void OnDrawGizmos()
{
//记录默认的值
var color = Gizmos.color;
Gizmos.color = Color.white;
Gizmos.DrawCube(transform.position,Vector3.one);
//执行完毕后,还原会默认值 因为Gizmo是静态的,以防其他使用Gizmo时被影响
Gizmos.color = color;
}
private void OnDrawGizmosSelected()
{
var color = Gizmos.color;
Gizmos.color = Color.red;
Gizmos.DrawWireCube(transform.position, Vector3.one);
Gizmos.color = color;
}
}
方法二
适用于无法获得目标脚本源码,无法添加回调函数时
新建一个Target Example脚本,挂载在对象上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class DrawGizmoExample
{
[DrawGizmo(GizmoType.NotInSelectionHierarchy |
GizmoType.InSelectionHierarchy |
GizmoType.Active |
GizmoType.Selected |
GizmoType.Pickable)]
//参数:(目标物体,上方定义的类型)
private static void MyCustonOnDrawGizmos(TargetExample target,GizmoType gizmotype)
{
var color = Gizmos.color;
Gizmos.color = Color.white;
Gizmos.DrawCube(target.transform.position, Vector3.one);
Gizmos.color = color;
}
[DrawGizmo(GizmoType.Active | GizmoType.InSelectionHierarchy)]
//选中高亮
private static void MyCustomDrawGizmoSelected(TargetExample target, GizmoType gizmotype)
{
var color = Gizmos.color;
Gizmos.color = Color.blue;
Gizmos.DrawWireCube(target.transform.position, Vector3.one);
Gizmos.color = color;
}
}