1.overdraw指屏幕上像素在同帧内被渲染多次
2.影响overdraw的因素
2.1我们在unity中创建两个Image图片,其中一个附上材质球
我们通过Canvas源码来探究一下,Canvas重绘主要包含网格元素重绘和布局重绘
当网格重绘时会回调Canvas.willRenderCanvas方法
在Image源码的设置颜色代码中,会判断传进来的颜色和当前颜色是否一致,不一致设置顶点为脏数据,加载到重绘的网格元素列表中
在Graphic中设置材质球会判断传入材质球和当前材质球是否一致,其他同理
我们通过脚本测试发现,改变第一个图片的Image颜色时,发送重新绘制,改变第二个图片的材质球的颜色时没有发生重绘
2.2布局重绘过程
首先清除为空的和要销毁的布局重绘,之后对布局层级关系排序,最后对布局重绘,发送布局重绘结束回调
2.3其他影响重绘
2.3.1慎用Mask组件,它自带两层OverDraw
2.3.2使用Text的外边框和阴影时会引起重绘