Unity启用Gizmos后其他Gizmos仍显示,如何仅保留Debug.DrawLine?
解决Unity中保留Debug.DrawLine同时隐藏其他Gizmos的方法
方法1:通过Gizmos面板精准过滤
- 在Game视图右上角点开Gizmos下拉面板,只勾选Debug选项(这是
Debug.DrawLine的显示开关) - 找到
TextMeshPro或TextMeshProUGUI相关选项,取消勾选它们的Gizmos显示 - 把其他不需要的组件Gizmos选项全部取消勾选
方法2:用代码屏蔽特定组件的Gizmos
如果有些组件的Gizmos没法通过面板关闭,给对应对象挂个脚本覆盖默认的Gizmos绘制逻辑:
using UnityEngine; using TMPro; [RequireComponent(typeof(TextMeshProUGUI))] public class TurnOffTMProGizmos : MonoBehaviour { // 空实现OnDrawGizmos,覆盖TextMeshPro默认的Gizmos绘制 void OnDrawGizmos() {} }
把这个脚本挂到所有显示Gizmos的Text Mesh Pro对象上就行。
方法3:用GL类替代Debug.DrawLine(可选)
如果上面的方法都不生效,直接用GL类画线,这种方式不需要开Gizmos开关,完全独立显示:
using UnityEngine; public class DrawLineNoGizmos : MonoBehaviour { public Vector3 lineStart; public Vector3 lineEnd; public Color lineColor = Color.red; void OnPostRender() { GL.PushMatrix(); Material lineMat = new Material(Shader.Find("Unlit/Color")); lineMat.SetColor("_Color", lineColor); lineMat.SetPass(0); GL.Begin(GL.LINES); GL.Vertex(lineStart); GL.Vertex(lineEnd); GL.End(); GL.PopMatrix(); } }
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

