Notifications
Article
查看uGUI UI组件生成的顶点数
Published 14 days ago
6
0
查看uGUI UI组件生成的顶点数
uGUI中就三个基本的UI组件Text, Image, RawImage,它们都继承自Graphic组件,查看Graphic组件源码可以发现,显示这些UI组件时分为好几个步骤,其中包括了
当组件参数改变时,重新生成顶点列表
获取组件当前节点上继承了IMeshModifier接口的组件,对生成的顶点列表进行修改
使用生成的顶点列表填充网格
uGUI的Shadow和Outline就继承IMeshModifier接口,简单的把UI组件生成的顶点列表复制若干遍再进行位置偏移,以达到阴影或外轮廓的效果
所以要查看UI组件生成的顶点数,可以将下面的脚本挂到UI节点上

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIVertexDebug : BaseMeshEffect
{
public override void ModifyMesh(VertexHelper vh)
{
List<UIVertex> verts = new List<UIVertex>();
vh.GetUIVertexStream(verts);
Debug.Log(verts.Count);
}
}

可以发现一个Simple类型的Image组件就6个顶点,一个Sliced类型的Image组件54个顶点, 而Text组件中的1个字符就会生成6个顶点,如果加了Outline,则顶点数会翻5倍

稍微修改上面的代码

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UIVertexDebug : BaseMeshEffect
{

public Mesh mesh = null;

public override void ModifyMesh(VertexHelper vh)
{
List<UIVertex> verts = new List<UIVertex>();
vh.GetUIVertexStream(verts);
Debug.Log(verts.Count);

if (mesh == null)
{
mesh = new Mesh();
}
vh.FillMesh(mesh);
}
}
在Unity中添加一个新的Inspector面板,双击Mesh,点击新的Inspector面板右上角的锁锁住该面板,就可以实时查看节点上UI组件生成的网格信息了

Tags:
qiu linhui
程序 - Programmer
1
Comments