Unity3D性能优化 (五)——UI

一、DrawCall优化 

①UI层级 

Unity3D性能优化 (五)——UI_第1张图片
Unity3D性能优化 (五)——UI_第2张图片

三张图对比发现场景中UI的数目一样,布局有变化,导致了其DrawCall数目不一样。当出现重叠时,会影响空间拓扑关系,从而影响了Unity对DrawCall的优化。 

所以UI布局时,同一深度的UI(Item)不要出现重叠。

Unity3D性能优化 (五)——UI_第3张图片


在实际应用中如背包系统,上面两张图由于第一张的Image偏大,导致DrawCall的增加

②精灵打包 

Unity3D性能优化 (五)——UI_第4张图片


通过设置PackingTag,将同一类型的Icon设置为相同的PackingTag,系统就会把这些Icon打包在一起

③图集 

Unity3D性能优化 (五)——UI_第5张图片

图集是将小图拼在一张大图上,在Unity工程中再切割成单个精灵使用。 

精灵打包和图集优化DrawCall的原理是相同的: 

在界面中默认一张图片一个DrawCalls,同一张图片多次显示仍然为一个DrawCalls,因此将多张小图合在一起从而减少DrawCall.

二、网格重建 

关于Graphics的重构:http://www.cnblogs.com/twjcnblog/p/5850648.html 

为了避免网格重建带来的开销,可以对UI布局进行动静分离,将动态变化中的UI组件单独分配到一个Canvas中。

三、UI事件检测 

UGUI中的事件检测是判断输入事件的位置与按钮的绘制位置是否重合,这样导致了进行事件检测时会对所有UI元素进行判断,可是对不进行响应事件的UI元素屏蔽掉其事件。 


去除Raycast Target的√

四、OverDraw(过度绘制) 

Unity3D性能优化 (五)——UI_第6张图片
Unity3D性能优化 (五)——UI_第7张图片

对于一些透明的边框背景图,其中间区域理论上是不必去绘制的,虽然设置成了透明,不被人们看见,但计算机还是进行了绘制,因此应该将这一部分性能消耗规避掉,传统的做法就是如上图去掉FillCenter的勾选。

你可能感兴趣的:(Unity3D性能优化 (五)——UI)