Unity Gizmos

简介

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. 自定义触发区域

cs 复制代码
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路径可视化

cs 复制代码
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视图 中绘制(支持非运行模式),适合静态逻辑调试
相关推荐
__water25 分钟前
RHA《Unity兼容AndroidStudio打Apk包》
android·unity·jdk·游戏引擎·sdk·打包·androidstudio
两水先木示11 小时前
【Unity3D】微信小游戏适配安全区域或胶囊控件(圆圈按钮)水平高度一致方案
unity·微信小游戏·安全区域·ui适配·胶囊控件·safearea
枯萎穿心攻击11 小时前
ECS由浅入深第三节:进阶?System 的行为与复杂交互模式
开发语言·unity·c#·游戏引擎
不绝19112 小时前
怪物机制分析(有限状态机、编辑器可视化、巡逻机制)
网络·游戏·unity·游戏引擎
unicrom_深圳市由你创科技12 小时前
Unity开发如何解决iOS闪退问题
unity·ios·蓝桥杯
Yasin Chen17 小时前
C# Dictionary源码分析
算法·unity·哈希算法
深海潜水员1 天前
【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现
游戏·unity·c#
Thomas_YXQ1 天前
Unity3D游戏内存优化指南
游戏·unity·职场和发展·性能优化·蓝桥杯·游戏引擎·unity3d
chillxiaohan1 天前
Unity接入Steamworks.NET实现通信功能
unity
枯萎穿心攻击2 天前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎