Gizmos辅助调试工具
Gizmos是Scene场景的可视化调试或辅助工具,可以通过两种方式实现。
1、通过OnDrawGizmo或者OnDrawGizmosSelected方法
代码示例
using UnityEngine;
public class Test5_GizmosExample : MonoBehaviour
{
//一直绘制
private void OnDrawGizmos()
{
Color color = Gizmos.color;
Gizmos.color = Color.green;
Gizmos.DrawSphere(transform.position, 0.3f);
Gizmos.color = color;
}
//选中物体才进行绘制
private void OnDrawGizmosSelected()
{
Color color = Gizmos.color;
Gizmos.color = Color.red;
Gizmos.DrawSphere(transform.position, 0.3f);
Gizmos.color = color;
}
}
效果展示
未选中物体
选中物体
P.S. Gizmos.color作为全局的静态变量,为了防止这里的color修改会对其他地方的绘制造成影响,所以在绘制完Gizmos的时候,将Gizmos.color修改为原先的值。
OnDrawGizmo或者OnDrawGizmosSelected作为MonoBehaviour的方法,可以直接放在业务逻辑脚本中
2、通过DrawGIzmos特性
新建一个表示业务逻辑的类TargetExample,将其挂载在场景中的对象身上
代码示例
using UnityEditor;
using UnityEngine;
public class Test5_GizmosTest
{
[DrawGizmo(GizmoType.Selected)]
public static void GizmosDrawTest5(Test5_GizmosExample target, GizmoType gizmoType)
{
Color color = Gizmos.color;
Gizmos.color = Color.yellow;
Gizmos.DrawLine(target.transform.position, target.transform.position + Vector3.up);
Gizmos.color = color;
}
}
效果展示
PS. 该方法需要将该类放在Editor文件夹内,使用特性的方法可以将业务逻辑和调试脚本分开。由于其针对的是编辑器组件的方法,需要设置为Static方法。
绘制类型
|
3、常用Gizmos的方法
- Gizmos.DrawCube() 绘制实体立方体
- Gizmos.DrawWireCube() 绘制立方体边框
- Gizmos.DrawRay() 绘制射线
- Gizmos.DrawLine() 绘制直线
- Gizmos.DrawIcon() 绘制Icon,Icon素材需要放在Gizmos文件夹中
- Gizmos.DrawFrustum() 绘制摄像机视椎体的视野范围