Animation&Animator
性能测试
测试用例如下:
测试结果:
使用原则
- 性能结果与
Curve
和 CPU核心数量正相关- 更少的核心:
Animation
的优势更大 - 更多的核心:
Animator
的优势更大
- 更少的核心:
- 两个组件对性能的影响都随着组件数量呈线性递增
- 最佳做法取决于使用的硬件和动画数量
- 当动画比较简单时,使用
Animation
- 当动画比较复杂时,使用
Animator
- 当动画比较简单时,使用
注意事项
性能问题
在使用 Animator
时,处理 Layers
需要注意
- 在每个
Layer
中激活的状态每帧都会 evaluated Layer Weight
是无效的- 即使 Weight = 0
- Weight = 0 的 Layer = 浪费的工作
- 请分开使用
Layer
Humanoid rig
会使用IK
& 重定向计算Generic rig
不会
对象池问题
Animator
在GameObjec
disable 时,会重置他们的状态- 唯一的解决办法是,关闭
Animator
组件,而不是GameObject
- 但是这样会导致其他的问题,需要手动管理其他的
Colliders/Rigidbodies
等组件
- 但是这样会导致其他的问题,需要手动管理其他的
上面的问题会导致对象池的设计会很难,但是我们可以借助KeepControllerStateOnDisable这个API 来避免对象池的维护问题