Debug.DrawLine没有显示在GameView中

我正在研究2D Unity应用程序,我遇到了一些奇怪的行为。

这段代码工作得很好。

Debug.DrawLine(button1.transform.position, button2.transform.position, Color.green); 

当我运行应用程序时,我在“场景”视图中看到一条绿线。

但是当我有以下行时,游戏视图中没有任何内容。

 Physics2D.Linecast(button1.transform.position, button2.transform.position); 

我很困惑Unity如何在这两个按钮之间画一条线,但由于某种原因,它只是在游戏视图中没有这样做。

知道我怎么解决这个问题吗?

Just Line Serlite说, Physics2D.Linecast不是用于绘制线,而是用于检测两个对象中间是否有一个带有光线投射的对象。 它与绘制线无关。

如您所知,除非启用Debug.DrawLineDebug.DrawLine将仅在Scene视图中工作。 您可以使用LineRendererGL函数来绘制线条,这些线条可以在不启用LineRenderer的情况下工作,也可以在构建中工作。

这是一个在游戏和场景视图中绘制线条的辅助类。

 public struct LineDrawer { private LineRenderer lineRenderer; private float lineSize; public LineDrawer(float lineSize = 0.2f) { GameObject lineObj = new GameObject("LineObj"); lineRenderer = lineObj.AddComponent(); //Particles/Additive lineRenderer.material = new Material(Shader.Find("Hidden/Internal-Colored")); this.lineSize = lineSize; } private void init(float lineSize = 0.2f) { if (lineRenderer == null) { GameObject lineObj = new GameObject("LineObj"); lineRenderer = lineObj.AddComponent(); //Particles/Additive lineRenderer.material = new Material(Shader.Find("Hidden/Internal-Colored")); this.lineSize = lineSize; } } //Draws lines through the provided vertices public void DrawLineInGameView(Vector3 start, Vector3 end, Color color) { if (lineRenderer == null) { init(0.2f); } //Set color lineRenderer.startColor = color; lineRenderer.endColor = color; //Set width lineRenderer.startWidth = lineSize; lineRenderer.endWidth = lineSize; //Set line count which is 2 lineRenderer.positionCount = 2; //Set the postion of both two lines lineRenderer.SetPosition(0, start); lineRenderer.SetPosition(1, end); } public void Destroy() { if (lineRenderer != null) { UnityEngine.Object.Destroy(lineRenderer.gameObject); } } } 

用法

 LineDrawer lineDrawer; void Start() { lineDrawer = new LineDrawer(); } void Update() { lineDrawer.DrawLineInGameView(Vector3.zero, new Vector3(0, 40, 0f), Color.blue); } 

完成后,您可以调用lineDrawer.Destroy();

Debug.DrawLine将一个线条Gizmo渲染到场景视图中。

如果您想要在游戏视图中渲染一条线,请使用线条渲染器组件。

Line Renderer Docs