赞
踩
大家好,我在最近的工作中遇到了大量的Fairygui的优化需要,但是事与愿违,没有在网络上找到一个解答相对简单直接并且全面的教程,于是我就想把自己在工作中积累的优化经验分享给大家。本次教程基于的是新版的Fairygui,不用担心版本过久。如有错误,请在评论区指出,非常感谢。
我目前工作中使用的是Untiy开发,Fairygui优化本质上就是UGUI优化,不过Fairygui做了一些改进,将UGUI中很多需要手动操作的部分自动化了,所以相比而言更加抽象,也更简单了。
简而言之,如果有两个元素,他们之间的可视部分没有重叠,并且使用了同一个材质,并且他们的缩放,旋转,倾斜以及透明度都相同,那么在绝大多数情况下,都可以认为这两个元素是可以合批的。那么,在Untiy中,我们要如何判断一个UI界面的合批情况呢,又如何判断刚刚做的优化操作是否有作用呢?
这里,我们就要用到了Unity中提供的一些工具。
开启项目,点击右上角的Stats,就会弹出这样的弹窗,注意左侧中间的Batches,它就代表了当前这个页面的合批次数,越少越好,越多界面就会越卡。
除此之外,我们还要一个能够查看合批详细信息的串口,FrameDebug工具。通过Windows->Analysis->Frame Debugger打开。
进入之后,点击Enable,你就能知道这个界面有哪些元素是合批的了,
这种标志意味着着出现合批了,其他情况可以视作没有合批。我们要做的就是让合批的情况尽量多。
列表优化是相对而言基础的,针对列表的优化,我们要注意以下几点:
上面讲到,两个元素要合批,必须材质相同,下面就是几点材质相关的细节:
如果上面的方法你都行不通,那你有可能遇到了这种问题,在一个界面中,有多个重复的复杂组件,每个组件内部有可以和其他组件内部相合批的元素,但是被打断了,Unity可能渲染了第一个组件中的图片1,然后渲染第二个组件中的文字,然后才渲染第二个组件中的图片。明明是两个材质相同的元素,却不能合批,该怎么办呢?
方法就是把这个图片单独抽出来,要么直接和复杂组件放在同一个父节点下,要么在上方再创建一个列表,单独显示这个图片,这样就等于手动调整了渲染顺序,Unity渲染该列表时,畅通无阻,直接合批。
具体的操作方法可以参考Fairygui优化指南
在某些情况下,我们可以只调整Fairygui编辑器中元素的顺序就解决这个问题,比如说,我们看见FrameDebugger中一堆图片合批,中间参杂着文本,这些文本可能就是被放在了图片中间,那么我们调整一下Fairgui中元素的顺序,将文本集中放在上边,可合批的图片集中放在下面一起,被打断的合批问题有可能就解决了。
Fairgui还有一些优化的技巧和经验,那么第一期就先到这里,如果后面工作积攒了一些有用的方法,我会继续分享,希望这篇文章对你有所帮助,谢谢。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。