对于Unity项目CPU优化的理解

1、首先美术资源的面数,这个程序没法去改,只能通过美术修改。在不影响效果前提下,面数尽可能的少,现在的移动设备性能越来越高,一般同屏最高10万面左右都是可以接受的,当然为了适配一些少量的低端机还是需要减少,个人感觉一个角色面数控制在8千以内,5千左右效果就已经足够达到要求。

2、接下来,就是减少Drawcall数量,为什么要减少Drawcall?,因为DrawCall是CPU调用底层图形接口。减少数据拷贝的次数,同时就优化了CPU。

首先就是程序合并Mesh,这个我们程序就可以控制了,网上有很多Mesh合并的方法,主要就是合并Mesh、合并贴图。合并后的Mesh引用合并后的贴图。一度我以为合并了Mesh就减少了Drawcall,我现在才知道这是错的。应该是减少了对材质球的引用从而减少了Drawcall,如果Mesh合并了而材质球没有减少,那么Drawcall并没有减少。所以,合并Mesh是为了能够只引用一个材质球。包括之前做的跑酷对于每个循环场景的mesh合并,还有换装后对于角色的合并都是为了减少材质球引用。

Unity有自带的动态批处理(Dynamic Batching),但是它只对顶点数小于900的mesh进行batch,这个我们不需要管,因为是自动执行的,但是需要注意被Instantiate的模型Scale需要一致,不然不会进行batch

还有静态的批处理(Static Batching),这个就是需要勾上Inspector面板右上角的Static,这样所以被勾上Static的物体都将只占一个Drawcall,但是它就相当于是只读的了。

3、我觉得最次要的就是代码的优化,但是这也是非常必要的。这个就不多说了,网上有很多。

猜你喜欢

转载自blog.csdn.net/brucethl/article/details/82147813