Unity教程之-Unity3d移动平台性能优化专题(六):动画优化

 

上篇文章《Unity教程之-Unity3d移动平台性能优化(五):音频优化》,本篇文章我们继续探讨优化策略:

动画的执行主要影响了cpu的性能,大概在10%左右的消耗。就是说33ms的消耗中,会有接近3-4ms在动画上。

首先不论如何,都建议采用新版的动画系统,新版动画系统各方面的优化有比旧版要强很多。

然后新版中有两种系统可以选择,一种是通用动画,一种是类人动画。这里建议使用通用,虽然类人在某种情况下性能更好,但在某种情况下会出现动画出现问题,以及更差的性能的情况,具体请参考官方文档。

接下来就谈谈新版通用动画的性能优化:

1.骨骼数。在已有 30 块骨骼的装置上增加 15 块骨骼,则在通用 (Generic) 模式下要多花 50% 的时间进行处理。所以尽量少的骨骼数是性能的基础。人的基本骨骼在30左右,即使加上附件,也尽量不要超过40。复杂一点50,再多就显得有点过头了。你可以自己算算,30个骨骼可以显示10个模型,但50个就只能显示6个了。

2.贴图数。贴图多的话就会有多个蒙皮网格,间接导致动画播放性能下降,一个人只要一张贴图就好了。

3.播放没有融合的单个动画片段会导致Mecanim 比旧版动画系统慢。所以任何情况,都不建议使用直接播放单个动画片段的接口,而是通过状态机控制动画切换。

4.使用通用 (Generic) 时,采用根运动比不采用时更昂贵。如果动画不采用根运动,确保不要选择根骨

5.使用哈希而非字符串来查询动画器 (Animator).

做好以上5点,相信你的帧数又提升1帧了!