一、顶点可视化
在Scene显示出UGUI物体顶点的方法:
List<UIVertex> verts = ListPool<UIVertex>.Get();
void OnDrawGizmos()
{
Gizmos.color = Color.green;//设置颜色
for (int i = 0; i < verts.Count; i++)
{
//把mesh顶点转为世界坐标
Vector3 targetPosition = transform.TransformPoint(verts[i].position);
Gizmos.DrawSphere(targetPosition, 1f);
}
}
至于获取顶点列表的方法,以Shadow为例:
public class StartGame : Shadow
{
// Use this for initialization
List<UIVertex> verts = ListPool<UIVertex>.Get();
public override void ModifyMesh(VertexHelper vh)
{
if (!IsActive())
return;
vh.GetUIVertexStream(verts);//获取顶点列表
}
void OnDrawGizmos()
{
Gizmos.color = Color.green;//设置颜色
for (int i = 0; i < verts.Count; i++)//把mesh顶点转为世界坐标
{
Vector3 targetPosition = transform.TransformPoint(verts[i].position);
Gizmos.DrawSphere(targetPosition, 1f);
}
}
}
把这个脚本挂到一个Text上。
效果:
二、顶点顺序
一个文字有4个顶点,组成两个三角面。但是组成两个三角面时,有两个顶点会重复计数。
四个顶点的顺序: 三角面顶点顺序:
Text的每个字符是两个三角面,共6个顶点(包含两个相邻重复点)(实际只有4个顶点)
左上角索引为0,按顺时针方向,0(t)->1(t)->2(b) ,2(b)->3(b)->0(t)
顶点顺序务必要记好,顶点着色时候需要按照顶点顺序来着色。
示例可参考我的另一篇文章:Text实现渐变色 UGUI 实现Text渐变色(通过添加组件实现)_爱敲代码的小伙计的博客-CSDN博客