图形学的基础知识:1、所有的渲染对象都是由网格(Mesh)构成,Mesh的绘制单位是图元(点、线、三角形)。意思也就是说所有的游戏对象都是在绘制一些点、线、三角形的集合。
2、顶点数据中最主要的是位置,颜色,纹理坐标,法线等。也就是说顶点中保存着其位置、颜色、纹理坐标、法线信息等。
3、贴纹理是指,将一张纹理(可以称为图片),根据纹理坐标,贴在模型上面。就好比同一个模型人,穿上了不同的衣服。纹理坐标指的是根据坐标将图片信息覆盖在Mesh表面,就相当于,柚子就贴在手腕处,裤子就贴在腿上。
UGUI提供了我们自己构建顶点、三角形的类,那就是VertexHelper类。通过这个类,我们可以创建顶点,构成三角形,填充到一张mesh上,然后用MeshRenderer渲染到屏幕上,实际上我们可以直接操作Mesh类添加顶点、三角形等操作,这里的vertexHelper只是UGUI与Mesh之间的一座桥梁。
AddVert 这里采用的添加顶点函数,函数参数分别对应了顶点位置,顶点颜色,纹理坐标
AddTriangle 三角形
AddUIVertexQuad 四边形
AddUIVertexTriangleStream 三角形列表
Dispose 清理分配的内存
FillMesh 用数据填充给定的网格
using UnityEngine; using UnityEngine.UI; public class ExampleClass : MonoBehaviour { Mesh m; void Start() { Color32 color32 = Color.red; using (var vh = new VertexHelper()) { vh.AddVert(new Vector3(0, 0), color32, new Vector2(0f, 0f)); vh.AddVert(new Vector3(0, 100), color32, new Vector2(0f, 1f)); vh.AddVert(new Vector3(100, 100), color32, new Vector2(1f, 1f)); vh.AddVert(new Vector3(100, 0), color32, new Vector2(1f, 0f)); vh.AddTriangle(0, 1, 2); vh.AddTriangle(2, 3, 0); vh.FillMesh(m); } } }