网格的学习—1

    这节我将会给大家讲一下unity里面的网格,或许有好多人不知道texture和sprite的区别,这里我们简单的讲一下,texture只是简单的图片,他可以使png格式,也可以是其他格式,而sprite它是有网格信息的,一张图片怎么样才能显示在屏幕上呢,在unity2D环境中,其实首先是给一个空物体添加一个MeshFilter,有了网格并一定就能显示,还要给物体添加一个MeshRenderer,当然你还要给MeshRenderer要添加材质,这才可能显示一张图片。sprite它的网格其实是一个面,unity本来就拥有背面剔除技术,所以背面我们是看不到的,那么这节我将会教你们怎么绘制一个图片,主要分下面几步:

  1  建一个空物体。

  2 添加MeshFilter和MeshRenderer组件。

  3  附加材质。

  4 添加网格。

在unity里面,一个游戏物体是由很多面,一个面是是由三角形组成。计算机绘制一个三角形他的绘制顺序是顺时针的,至于为什么是顺时针,其实我也不知道,

现在绘制一个三角形,首先先绘制三个点,然后对每个点指定他们的绘制顺序(顺时针才能显示出来)。假如我们依次添加了三个点,Vector3(0,0,0),Vector3(1,0,0),Vector3(0,1,0)。你可以在草稿纸绘制出他们的位置,然后用顺时针去比对,看哪一个是先绘制,哪一个最后绘制的,结果得到第一个点绘制顺序为0,第二个点的绘制顺序为2,第三个点绘制顺序为1,这样一个三角形就能成功绘制出来了。

具体代码如下:

 首先假装前面2步你都完成了,我们只做第三步和第四步。

 private MeshGenerateMesh()

{

        _verticles=new List<Vector3>();
        _trangels=new List<int>();
        _uvList=new List<Vector2>();
        _waterMesh=new Mesh();

    //首先添加点,

       _verticles.Add(new Vector3(0, 0, 0));
       _verticles.Add(new Vector3(1, 0, 0));
       _verticles.Add(new Vector3(0, 1, 0));

      _waterMesh.vertices = _verticles.ToArray();

      //给出他们的绘制顺序

      _trangels.Add(0); _trangels.Add(2); _trangels.Add(1);

        _waterMesh.triangles = _trangels.ToArray();

     //最后给网格贴UV信息,

       _uvList.Add(new Vector2(0, 0));
       _uvList.Add(new Vector2(1, 0));
       _uvList.Add(new Vector2(0, 1));

      _waterMesh.uv = _uvList.ToArray();

      return _waterMesh;

}

第三步做完了之后给MeshRenderer指定材质就行了。一个四边形由2个三角形组成,依次类推,那么我们只用添加4个点就行了,但是我们要指定6个点的绘制信息。说明有的点重复了,当然你可以找到其中的规律。绘制出了一个四边形,你再想想你是不是可以绘制出来一个正方体,下节我们来做一个有趣的绘制


   

你可能感兴趣的:(网格的绘制)