最新消息:

Unity 绘制线

编程 BetaStar 6090浏览

你好,今天是 2017年09月25日,星期一,农历八月初六,非常感谢你的来访。现在分享的是:Unity 绘制线。

在了解如何绘制线之前,我们先熟悉一下 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 绘制线 就分享到这里,再次感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Unity 绘制线

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者