UGUI优化总结

1.检查空Imagegit

游戏中许多时候会使用一个透明的Image组件来监听点击事件或者屏蔽Image后面的按钮事件,空的Image能够解决这个问题,用起来也很方便,可是空的Image照旧会参与绘制,从而产生overdraw。解决办法是扩展Graphic组件来替换Image组件。工具

游戏中使用工具检查空Image: 对应prefab上Image组件的Sprite为空或Color.a透明(<0.05f),咱们将使用了空Image的prefab列出来手动进行替换。监听事件时还会使用一个Button或者EventTrigger来实现,这种需着重检查。工具见末尾连接地址。性能

2.优化九宫格Image测试

九宫格图像使用的也比较多,Image选为Sliced类型后会有一个fillCenter选项,默认状况下该选项是勾选的,但若是九宫格的中间区域为透明图像,其实不须要勾选fillCenter,从而下降overdraw。因此咱们须要使用工具检测该Image的sprite的中心区域优化

是否为透明,将透明的prefab列出来供检查。spa

3.检查Mask组件游戏

Mask组件也会被用到,最可能是用在ScrollView中,网上也有不少资料介绍Mask组件会产生额外的两个drawcall,而大部分时候Mask都是矩形的,因此其实可使用RectMask2D组件来替换掉Mask组件,官方也比较推荐RectMask2D组件,事件

但若是你的Mask组件不是矩形的那么就不能替换。it

4.检查错误透明材质扩展

项目中有不少材质美术设置有些问题,从而影响性能,其中一个就是Material所使用的纹理是RGB格式或者虽然RGBA格式可是A通道为1,可是美术却给使用了一个透明的Shader进行渲染,这种设置虽不会出错可是会影响性能。因此咱们须要检测出

renderType为Transparent或者TransparentCutout类型,而且他的renderQueue>2000(2000为Geometry)且<=3000(3000为Transparent)的材质,若是他的主纹理不透明,则列举出使用了这种材质的prefab或者Scene,以便检查。

5.错误的UI设置

以前在检查一个UI合批失效的问题,明明打了图集,但就是不能合批,非常诧异,通过测试发现若是你的Image组件pos.z不为零或者rota.x或rota.y不为零,那么会被看成3DUI从而不参与合批,增长drawcall,而这些非零值有时每每是不须要甚至是

不注意被设置上的,但却影响了这个合批,非常坑人。因此须要用工具检查这种被设置错误的UI,酌情进行重置。

 

工具地址:https://gitee.com/planefight/Tools.git

相关文章
相关标签/搜索