Unity性能优化

1.优化一般在开发过程中遇到疑难杂症的使用寻找解决方法。大部分都是在性能卡顿,内存泄露、资源冗余,发热严重等问题。游戏中性能优化主要是围着CPU、GPU和内存三大方面进行优化

2.一般都是CPU中从渲染、UI、加载等几个重要维度分析问题。CPU方面的性能开销主要可归结为两大类:引擎模块性能开销和自身代码性能开销。引擎模块中又可细致划分为渲染模块、动画模块、物理模块、UI模块、粒子系统、加载模块和GC调用等等。渲染模块是消耗最严重的引擎模块。所以1.降低Draw Call是渲染模块优化方面的重中之重。一般来说,Draw Call越高,则渲染模块的CPU开销越大。一些shaders会使Draw Call翻倍,灯光在某些shaders中也会是Draw Call翻倍。所以渲染优化从降低Draw Call,shaders,灯光数量中解决。Draw Call和总线带宽是天平的两端尽可能维持天平的平衡。2.简化资源,简化资源是非常行之有效的优化手段。其渲染资源其实是“过量”的,过量的网格资源、不合规的纹理资源等等。所以,对资源的使用渲染的三角形面片数、网格和纹理资源的具体使用情况分析。3.UI模块,尽量减少刷新(Update)。4.加载问题,健身ab资源冗余,5.代码效率

3.内存优化,资源内存占用一款游戏项目的资源主要可分为如下几种:纹理(Texture)、网格(Mesh)、动画片段(AnimationClip)、音频片段(AudioClip)、材质(Material)、着色器(Shader)、字体资源(Font)以及文本资源(Text Asset)等等。其中,纹理、网格、动画片段和音频片段则是最容易造成较大内存开销的资源。1.纹理Android平台的ETC、iOS平台的PVRTC、Windows PC上的DXT,纹理尺寸,Mipmap功能ead & Write。2. 网格,Normal、Color和Tangent,3则是当你使用LoadFromCacheOrDownload、CreateFromFile或new WWW本地AssetBundle文件时产生的序列化文件。4.托管堆内存占用,内存泄露,无效的Mono堆内存开销,资源的实例化所致改变其Material中的属性来得到特定的受击效果。这种做法则会导致引擎为特定的GameObject重新实例化一个Material,后缀会加上(instance)字样。其本身没有特别大的问题,但是当有改变Material属性需求的GameObject越来越多时(比如ARPG、MMORPG、MOBA等游戏类型),其内存中的冗余数量则会大量增长

你可能感兴趣的:(Unity性能优化)