最近终于闲下来了,于是开始把近期探索到的unity相关优化整理起来。
我们的项目采用的人物表现方式是spine动画,这在2D游戏里算比较常见的解决方案了,但是里面有一些设置需要提前注意一下,否则会造成不必要的性能浪费。
养成读官方文档的习惯
官方文档详细介绍了耗性能的点,每个组件的使用方式和需要注意的一些选项,传送门:spine-unity 主要组件
spine导出格式应当使用.skel.bytes而非.json
无论是从加载速度还是从包体大小,前者都要优于后者,spine至今还留着.json的导出格式可能是为了兼容旧版本工程。
skeleton graphic里的enable separation和multiple canvasrenderers最好不要勾选
对于正常项目,是没有multiple canvasrenderers的需求的:
如果勾选了这两项(注意,勾选其中一项是不会产生实际作用的,所以必须同时勾选才能发挥其价值),则可能会造成打断合批的现象:
原因在于,官方给这个接口的目的是匹配多张texture,如果atlas texture分为多张,就需要用到这两项设置,这是导致断批的罪魁祸首。出于性能方面的考虑,最好尽可能地避免这样做.。在UI中使用的Skeletons应被打包成一个single-texture (单页) atlas,而非多页atlas。
禁用SkeletonRenderSeparator
这在很多项目里都完全没必要使用,除非是打算做精细化2D项目(伪3D),否则不需要考虑类似的层级穿帮问题,甚至说使用这种骨骼层级分离器会一定程度加大spine的复杂度。
善用spine软件下的修剪功能
修剪按钮可以一定程度削减网格数,进而达到不影响外观表现的情况下减小内存开销。