Unity中Game视图使用Debug.DrawLine仅显示竖线问题求助
可能的原因及对应解决方案
1. 深度测试导致横线被遮挡
Debug.DrawLine默认开启深度测试(最后一个可选参数depthTest默认值为true),如果横线刚好位于场景中未渲染的隐藏物体(比如关闭了MeshRenderer的碰撞体、透明对象、不可见UI)后方,就会被深度测试剔除,无法在Game视图显示。而Scene视图默认会忽略部分隐藏对象的遮挡,且竖线刚好未被遮挡,因此显示正常。
解决方案:修改绘制代码,关闭深度测试即可:
//Drawe Grid Box Lines //Horizontal Lines Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x + 1, y), Color.white, 100f, false); Debug.Log("Line Drawn: " + GetWorldPosition(x, y) + ", " + GetWorldPosition(x + 1, y)); //Vertical Lines Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x, y + 1), Color.white, 100f, false); Debug.Log("Line Drawn: " + GetWorldPosition(x, y) + ", " + GetWorldPosition(x, y + 1));
2. Game视图相机裁剪参数不匹配
Game视图使用的相机的近/远裁剪面、正交大小(正交相机模式下)和Scene视图的相机参数不一致,如果横线的Z轴坐标刚好落在Game视图相机的裁剪范围外,或者在2D正交模式下刚好对齐到像素间隙,就会出现无法渲染的问题。
解决方案:
- 选中Game视图使用的相机,对比Scene视图相机的
Near Clip、Far Clip参数,确认网格所有点位都在裁剪范围内 - 若是2D正交相机,尝试将网格整体向相机方向偏移0.1单位的Z轴距离,或者微调正交大小
3. 渲染管线或后处理过滤
如果你使用URP/HDRP等可编程渲染管线,部分后处理效果(如FXAA抗锯齿、模糊)可能会将1像素宽度的水平线条误判为噪点过滤,竖线因为方向问题不会被过滤。
解决方案:
- 临时关闭相机挂载的后处理组件,确认横线是否恢复显示
- 若确认是后处理导致,可改用
GL类绘制调试线条,或者用LineRenderer组件替代Debug.DrawLine做长期调试
4. Game视图显示设置异常
Game视图的缩放比例不是100%、开启了低分辨率适配选项,也可能导致水平线条在缩放时丢失。
解决方案:
- 点击Game视图上方的缩放下拉框,选择
1x(100%)缩放比例 - 取消勾选Game视图菜单中的
Low Resolution Aspect Ratios选项
内容的提问来源于stack exchange,提问作者xBarkeeper
相关产品推荐
相关产品推荐

