在了解如何绘制线之前,我们先熟悉一下 Unity 中 GL 图像库的平面坐标系。如图所示,按照箭头所指的方向,平面坐标系的原点 (0,0) 位于左下角。
值得注意的是,GL 图像库的平面坐标和普通坐标是有区别的,GL 图像库的 x 轴的最大值是 1,y 轴的最大值也为 1,而不是按照像素来计算的。因此,在 GL 图像库的平面坐标系中,每个点的横坐标和纵坐标都应当是 0 与 1 之间的浮点数,而真实的像素坐标需要根据这个浮点数来计算。
比如当前游戏屏幕的像素宽高是 500×500,在 GL 图像库平面上选择一个点 (0.5f,0.5f),那么这个点真实像素的横坐标和纵坐标应当是:500(屏幕宽) × 0.5(x坐标) = 250,500(屏幕高) × 0.5(y坐标) = 250。
本例中,我们在屏幕中绘制了 3 条朝向为右上角的线段,具体代码如下所示。
using UnityEngine; using System.Collections; public class CSharp : MonoBehaviour { public Material material; //绘制线段的材质 void OnPostRender() {//此绘制方法由系统调用 if (!material) { Debug.LogError("请给材质资源赋值"); return; } material.SetPass(0); //设置该材质通道,0 为默认值 GL.LoadOrtho(); //设置绘制2D图像 GL.Begin(GL.LINES); //表示开始绘制,绘制类型为线段 DrawLine(0,0,200,100); //绘制第一条线段 DrawLine(0,50,200,150); //绘制第二条线段 DrawLine(0,100,200,200); //绘制第三条线段 GL.End(); //结束绘制 } void DrawLine(float x1,float y1,float x2,float y2) { //绘制线段,需要将屏幕中某个点的像素坐标除以屏幕宽或高 GL.Vertex(new Vector3(x1/Screen.width, y1/Screen.height, 0)); GL.Vertex(new Vector3(x2/Screen.width, y2/Screen.height, 0)); } }
在上述代码中,我们使用 GL.Begin() 方法开始绘制图形,其中该方法的参数为绘制图形的类型,包括线段、三角形和四边形等。最后需要使用 GL.End() 方法结束图形绘制。此处需要说明的是,所有图形的绘制都必须在这两个方法之间完成。
好了,Unity 绘制线 就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!
如果文章对你有帮助,欢迎点击上方按钮打赏作者