Unity_UGUI 优化篇

做优化了解3个点:
CPU:drawCall 物理组件 GC 代码运行效率
GPU:减少绘制数目,优化显存带宽
内存:unity内部内存,mono托管内存

UGUI可优化的性能 总结一下有下面几个吧:
1.网格重建
2.合批 节省drawcall
3.填充率( overDraw像素重新绘制)

网格重建(两个网格重建:单个UI,合批完的整体UI网格)(CPU优化 canvas脚本的算法)

网格重建就是ui有修改 需要重新绘制网格
如果是单单重新绘制当前UI性能还没什么消耗 但往往为了节省drawcall我们都会搞合批这个东西
但搞合批 就是把能合批的UI都做成一个网格 这样就会导致一个ui修改需要重新绘制整个合批网格 性能消耗还是比较大的
那这里应该怎么优化呢 这就需要了解合批的一些东西了 Canvas 是 负责管理UI渲染和合批的
实际开发中大多数游戏都可能是存在多个UI界面的:普通的界面,弹窗界面,弹窗界面可能还能出来一个提示窗口(恭喜获奖,确认界面)
如果说所有界面都用一个canvas 重建网格的消耗可以说是非常大的是吧 那我们可以用好几个Canvas
这样就可以减少网格重建的性能消耗 但这样也会增加drawcall
所以用几个canvas还是要看项目的需要 一般控制在5个左右最好

合批(CPU优化)

合批的基本规则:depth 是否大于 等于0,materialID一样, textureID一样,两个渲染的图片中间没有任何图片

特殊mask合批:如果和另外一个mask的materialID, textureID一样 mask的子物体也能合批 但不能相交
rectMask2D: 比mask更节省性能 本身并不占用drawcall 被裁剪的部分不会计算顶点 和其他mask的子物体是没办法进行合批的
而想要不同的图片materialID一样, textureID一样 这就是图集的作用了

动态打图集 优化没办法把资源都放到一个图集里面的资源 例如有100个英雄头像 就不适合打图集了 太大了 就可以通过动态打图集链接: link

填充率(GPU优化)

填充率: Fill Rate(填充率)是指显卡每帧或者说每秒能够渲染的像素数
overDraw 一个像素被多次绘制 会导致填充率不够用导致的卡帧 或者CPU和GPU的占用率过高
在这里插入图片描述
最低版本2018.4.26!!!

1.有空边透明的图片:
方法1:图片资源的spriteMode设置为 polygon然后设置一下图片实际显示的区域
方法2:TexturePacker插件 比unity自带的算法要好,计算出来的东西比unity顶点要少
(但设置完后 还得设置一下image的UseSpriteMesh 最低版本2018.4.26,或者可以自己重写image 有地址.) 设置这个需要注意的是:顶点数会增加 需要权衡一下CPU和GPU优化哪个合适一点

2.不需要显示图片但需要有射线点击事件:
把透明度调到0 开启Canvas Renderer的Cull Transparent Mesh

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值