美文网首页
ui元素网格重建检测工具

ui元素网格重建检测工具

作者: AngerCow | 来源:发表于2021-02-27 16:10 被阅读0次

转自雨松大佬[UGUI研究院之找到具体某个引起了网格重建的UI元素(三十二)
运行游戏,挂上脚本

public class CheckBatchMesh : MonoBehaviour
{

    IList<ICanvasElement> m_LayoutRebuildQueue;
    IList<ICanvasElement> m_GraphicRebuildQueue;

    private void Awake()
    {
        System.Type type = typeof(CanvasUpdateRegistry);
        FieldInfo field = type.GetField("m_LayoutRebuildQueue", BindingFlags.NonPublic | BindingFlags.Instance);
        m_LayoutRebuildQueue = (IList<ICanvasElement>)field.GetValue(CanvasUpdateRegistry.instance);
        field = type.GetField("m_GraphicRebuildQueue", BindingFlags.NonPublic | BindingFlags.Instance);
        m_GraphicRebuildQueue = (IList<ICanvasElement>)field.GetValue(CanvasUpdateRegistry.instance);
    }

    private void Update()
    {
        for (int j = 0; j < m_LayoutRebuildQueue.Count; j++)
        {
            var rebuild = m_LayoutRebuildQueue[j];
            if (ObjectValidForUpdate(rebuild))
            {
                //Debug.LogErrorFormat("{0}引起网格重建", rebuild.transform.name,);
            }
        }

        for (int j = 0; j < m_GraphicRebuildQueue.Count; j++)
        {
            var element = m_GraphicRebuildQueue[j];
            if (ObjectValidForUpdate(element))
            {
                Debug.LogErrorFormat("{0}引起{1}网格重建", element.transform.name, element.transform.GetComponent<Graphic>().canvas.name);
            }
        }
    }
    private bool ObjectValidForUpdate(ICanvasElement element)
    {
        var valid = element != null;

        var isUnityObject = element is Object;
        //Here we make use of the overloaded UnityEngine.Object == null, that checks if the native object is alive.
        if (isUnityObject)
            valid = (element as Object) != null;

        return valid;
    }
}

相关文章

  • ui元素网格重建检测工具

    转自雨松大佬[UGUI研究院之找到具体某个引起了网格重建的UI元素(三十二)[http://www.xuanyus...

  • 网格重建的执行逻辑

    绝大部分UI问题牵扯到底层和消耗的原因,实际都是网格重建引发的,网格重建涉及到两部分。 第一个就是合批部分的重建,...

  • UGUI工具——获取Canvas网格重建的UI元素

    当Canvas需要重绘UI时,Unity内部会调用Canvas.SendWillRenderCanvas,进行网格...

  • UGUI笔记——UI Mesh Rebuild

    1.0 UGUI原理 在讲解UI网格重建之前,我们先简单了解一下UGUI实现原理,首先要显示UI,就要生成显示UI...

  • NGUI优化

    尽可能将动态UI元素和静态UI元素分离到不同的UIPanel中(UI的重建以UIPanel为单位),从而尽可能将因...

  • BlockCanary分析实现原理

    介绍 BlockCanary 一个android UI检测工具,追踪view耗时操作;附上地址:https://g...

  • 网格属性

    网格有哪些属性 三角网格可以看作是一个图结构,由顶点,边和面(三角片)三个元素组成。网格的常见属性也由这三个元素的...

  • UI元素

    标签 标签显示静态文本。 标签: 可以显示任意数量的静态文字 不支持直接的用户交互 可以由程序更新 可以夸越多行 ...

  • UICollectionView的使用代理方法

    pragma mark - 创建UI -(void)createUI{// 创建网格布局对象 UIColl...

  • 网格布局的基本概念

    什么是网格: 网格是一组相交的水平线和垂直线,它定义了网格的列和行。 网格容器: 我们通过在元素上声明 displ...

网友评论

      本文标题:ui元素网格重建检测工具

      本文链接:https://www.haomeiwen.com/subject/ztrifltx.html