【配置】Unity 性能 Review
发表于2018-02-23
本文首发于知乎专栏:MACK的游戏开发笔记,欢迎各位关注。
也是比较老的一篇笔记,Unity配置项很多这里只挑了部分比较通用和影响比较大的进行归档。
- Api Compatibility
Level使用较小的.Net库子集
- strip一定要开,unity4里面选择strip
level选择strip by byte code,选择micro mscorlib可能会导致crash,可以先不考虑;unity5中勾上strip
Engine Code。可减少数M。
- 定时Log性能的调试功能,非调试不要开启
- 动态合并和静态合并打开,会合并mesh和材质排序,降低DC减少CPU占用率。PS:动态合并条件比较苛刻实时合并,静态合并载入的时候合并会增加Loading时间和一些内存。
- Android下多线程渲染打开。只有Android提供了接口,在Unity优化技巧中有说过,实测打开多线程渲染大部分设备有10-20%的性能提升,但由于Android的碎片会会导致适配率和崩溃率有1%左右的下降。最理想的还是修改源码按机型适配。
- IL2CPP打开,一方面将C#编译成C++提升性能,另一方面可以起到对代码加密的效果,不像C#反编译出来的代码可读性极高。
- 配置优化:苹果如果希望支持32位和64位,在Architecture里选择Universal。然后再XCode工程里勾ByteCode,苹果会做优化自动分成32位和64位的包,iphone5开始支持64位。
- 预编译Shader,避免在游戏运行中实时编译Shader导致的卡顿。Shader中很多条件宏在build的时候被Unity自动strip掉了,因为build的场景和资源里不包含shader的一些variant而被Unity自动去掉。在GraphicsSettings里添加Always Included Shaders。但是不能添加Standard可能会内存爆炸。
- 使用GPU计算蒙皮。但是因为Android很多设备只以CPU为噱头GPU性能很差,这个选项开了有些Android设备帧率更低了。