UGUI源码解析——VertexHelper

Posted Hello Bug.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UGUI源码解析——VertexHelper相关的知识,希望对你有一定的参考价值。

一:前言

VertexHelper是一个工具类,可以帮助我们快速创建网格
我们知道一个UI想要显示出来就需要对应的Mesh网格信息,而生成Mesh的网格信息就保存在了VertexHelper中,实际上我们可以直接操作Mesh类添加顶点等数据,可以理解为VertexHelper是UGUI与Mesh之间的一座桥梁


二:源码解析

——字段







m_Positions:顶点位置
m_Colors:顶点颜色
m_Uv0S:第1个顶点UV坐标
m_Uv1S:第2个顶点UV坐标
m_Uv2S:第3个顶点UV坐标
m_Uv3S:第4个顶点UV坐标
m_Normals:法线向量
m_Tangents:切线向量
m_Indices:三角面顶点索引

——属性
currentVertCount:当前顶点数
currentIndexCount:当前顶点索引(为了绘制三角形,同一个顶点可能会使用多次,这里会统计使用多次的情况)

——AddVert
添加顶点

 

——AddTriangle
添加三角形,会按照顶点索引顺序绘制
CanvasRender和MeshRender不同在于三角形索引顺序不论正反CanvasRender都能够绘制出来

——FillMesh
将当前VertexHelper中的数据填充到传入的Mesh上,注意顶点数量不能超过65000

 

 ——AddUIVertexQuad
根据传入的顶点数据数组(verts),从当前索引处添加一个长方形,顶点数据数组(verts)中不论有几个数据也只能添加四个顶点数据

 

——GetUIVertexStream
获取当前VertexHelper中的所有顶点数据
将当前VertexHelper中的所有顶点数据填充到传入的顶点数据列表中(stream),会根据m_Indices顶点索引列表的数量创建顶点数据,例如一个长方形需要4个顶点,6个顶点索引,使用此方法得到的列表元素数量是6

——AddUIVertexStream
将传入的传入的顶点数据列表(verts)覆盖掉当前VertexHelper中的顶点数据,不会覆盖m_Indices
将传入的顶点索引列表(indices)添加到当前VertexHelper的m_Indices列表中
​​​

 

 

——AddUIVertexTriangleStream
将传入的顶点数据列表(verts)覆盖添加到当前VertexHelper中,会覆盖掉之前VertexHelper中的所有数据包括m_Indices列表,传入的顶点数据列表(verts)有几个数据,最终VertexHelper中的顶点列表和顶点索引列表就有几个数据,传入的顶点数据列表(verts)的长度必须是三的倍数

——PopulateUIVertex
返回指定索引的顶点数据

 

——SetUIVertex
将某个顶点数据赋值给指定索引的顶点数据

 

 

以上是关于UGUI源码解析——VertexHelper的主要内容,如果未能解决你的问题,请参考以下文章

UGUI源码解析——总览

UGUI源码解析——ICanvasElement

UGUI源码解析——IMeshModifier

UGUI源码解析——ICanvasElement

UGUI源码解析——LayoutUtility

UGUI源码解析——Graphic