- 简介
项目组反馈SkeletonMecanim.LateUpdate()消耗过高,
- 方案
- 暂停或降低游戏屏幕外动画的更新频率
大部分情况下,游戏屏幕外的动画更新是无用的,因为玩家并不能看到屏幕外的东西。所以,对于场景内的简单物件,或者怪物的行走、攻击等动画,处于游戏屏幕之外的时候,就可以考虑将这些动画根据离屏幕的远近降低spine的LateUpdate调用频率,或者直接暂停。如果担心动画在进入边缘时会出现动画表现的问题,可以适当的扩大游戏屏幕框的范围,使怪物或物件等,在靠近游戏屏幕框时就正常更新,经过这个缓冲,真正进入屏幕时动画就是正常显示的了。
- 将部分简单的动画改为序列帧动画的方式
项目里一些简单的物件也使用了spine动画,跟项目组沟通后,得知这些物件用spine制作并没有特殊的需求,这样完全可以采用序列帧动画替代。
- 总结
因为导致瓶颈的部分是Spine官方插件内更新动画的代码导致的,底层代码暂时不考虑去改动,从上层考虑的话,一是降低更新频率,二是减少需要使用spine的资源,三是降低update的消耗,这个除了优化代码外,就是减少需要更新的骨骼数量,因为会影响动画表现,所以不推荐第三条。综合考虑一,二条可优化的地方,只有降低屏幕外更新频率以及减少spine动画使用这两个方案了。