总体性能——动画模块性能

Animator.ApplyOnAnimatorMove:调用次数太多说明场景中角色数量太多了;

Animator.ProcessAnimationJob:关于AnimationClip的采样和读取;

WaitingForJobUnity5.X已经将其放入了子线程,等待子线程的处理;

角色的多少和AnimationClip的复杂程度影响耗时;

Animators.FireAnimationEventsAndBehaviour:动画事件;

Animators.DirtySceneObjects:优化时,勾选Optimiz Game Object选项;




打斗比较激烈时,开销比较高;

MOnAnimatorMoveDelegate.OnAnimatorMoveOnAnimatorMove的重写函数;

FK&Statemachine:正向动力学和状态机;(Animator Controller,状态机越负责,开销越大)

Write:重写入的过程,每一帧中回写每个骨骼节点的Transform的耗时;

MeshSkinning.Update:骨骼数量和三角面片的数量多时,开销高;

 

优化方案:

1:控制SkinnedMesh的骨骼数、动画曲线(复杂度和数量)等;

2:控制Animator.Update更新模式;

Always Animated / Cull Update Transform / Cull Complete

3:开启Optimize GameObject选项;(开启后,Write写回的耗时会大幅降低)



原因:触发了GameObjectInstantiateActive;

Animator.InitializeInstantiateActive GameObject时,GameObjectAnimator Controller上有很多状态机,Unity会重建上面的DataSetAvatarDataSetControllerDataSet),重建动画模块会有一定开销;


解决方案:

除了第一次使用InstantiateActive外,之后通过对Animator Controller组件进行ActiveDeactive,而GameObject不作处理,仍是Active状态,再把GameObject移出屏幕外;

UIAnimator不要使用InstantiateActive方式;


处理后的效果如下:



推荐文章链接:如何读懂UWA性能报告?—动画篇





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值