简介
Gizmos 是Unity编辑器中的一种可视化调试工具,用于在场景视图(Scene View)中绘制辅助图形、图标或文本,帮助开发者直观理解游戏对象的位置、范围、逻辑关系等信息
核心功能
1. 辅助可视化调试
- 在场景视图中显示碰撞体、触发器、射线等逻辑的形状和范围
- 绘制自定义的路径、区域或标记关键点(如出生点、目标点)
2. 编辑器内预览
- 在非运行模式下直接查看逻辑效果(如动画轨迹、物理模拟区域)
- 通过图标(如小箭头、立方体)标记特定对象的位置和方向
3. 自定义图形绘制
- 使用代码动态绘制线、球体、立方体等几何图形
- 支持不同颜色和持续时间、区分不同调试信息
Gizmos 的常用方法与场景
1. 方法
方法 | 作用 |
Gizmos.DrawWireSphere | 绘制线框球体 |
Gizmos.DrawLine | 绘制直线 |
Gizmos.DrawCube | 绘制实心立方体 |
Gizmos.DrawIcon | 在场景中显示图标(如Unity内置的箭头图标) |
Gizmos.color | 设置绘制颜色 |
Gizmos.DrawFrustum | 绘制视椎体(常用于摄像机或灯光范围) |
Gizmos.DrawMesh | 网格绘制 |
2. 脚本中的回调函数
- OnDrawGizmos()
- 调用时机:每帧调用,绘制持续显示的Gizmos(如碰撞体范围)
- 适用场景:需要常驻显示的调试信息
- OnDrawGizmosSelected()
- 调用时机:仅在对象被选中时调用,绘制选中状态的Gizmos
- 适用场景:仅在选中时显示详细信息(如触发器的精确边界)
使用示例代码
1. 自定义触发区域
public class TriggerZone : MonoBehaviour {
public Color gizmoColor = Color.red;
public Vector3 size = Vector3.one;
// 常驻显示的Gizmos
void OnDrawGizmos() {
Gizmos.color = gizmoColor;
Gizmos.DrawWireCube(transform.position, size);
}
// 选中时显示的Gizmos
void OnDrawGizmosSelected() {
Gizmos.color = Color.yellow;
Gizmos.DrawCube(transform.position, size);
}
}
2. AI路径可视化
public class AiPath : MonoBehaviour
{
public List<Vector3> pathPoints = new();
void OnDrawGizmos()
{
Gizmos.color = Color.blue;
foreach (Vector3 point in pathPoints)
{
Gizmos.DrawSphere(point, 0.2f);
}
Gizmos.DrawLineList(pathPoints.ToArray());
}
}
注意事项
1. 仅在编辑器可见
- Gizmos不会在发布后的游戏(Build)中显示,不影响运行时性能
2. 控制显示与隐藏
- 通过场景视图工具栏的 Gizmos菜单 切换全局显示(可过滤特定类型的Gizmos)
3. Gizmos.DrawLine与Debug.DrawLine的区别
- Debug.DrawLine:在Game视图 中绘制调试线(仅运行时),适合测试移动轨迹
- Gizmos:在Scene视图 中绘制(支持非运行模式),适合静态逻辑调试