查看uGUI UI组件生成的顶点数

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

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

public class UIVertexDebug : BaseMeshEffect
{
    public override void ModifyMesh(VertexHelper vh)
    {
        List verts = new List();
        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 verts = new List();
        vh.GetUIVertexStream(verts);
        Debug.Log(verts.Count);

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

查看uGUI UI组件生成的顶点数_第1张图片 查看uGUI UI组件生成的顶点数_第2张图片





你可能感兴趣的:(unity工作日记)