这节我将会给大家讲一下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个点的绘制信息。说明有的点重复了,当然你可以找到其中的规律。绘制出了一个四边形,你再想想你是不是可以绘制出来一个正方体,下节我们来做一个有趣的绘制