Version: 2023.2
重定向人形动画
动画参考

性能和优化

本页面提供一些提示来帮助您在 Unity 中获得最佳性能,内容涵盖动画系统运行时优化

注意:有关在 3d 应用程序中为角色建模以便在 Unity 中获得最佳性能的技巧,请参阅角色建模的性能优化

动画系统

控制器

未设置控制器Animator 不会花时间执行处理。

简单动画

播放没有混合的单个动画剪辑会使 Unity 的速度比旧版动画系统更慢。旧系统非常直接,对曲线采样并直接写入变换中。Unity 的当前动画系统具有用于混合的临时缓冲区,并会对采样曲线和其他数据进行额外复制。当前系统布局已针对动画混合和更复杂设置进行优化。

缩放曲线

动画化缩放曲线比动画化移动和旋转曲线的成本更高。为了改善性能,请避免使用缩放动画。

Note: This does not apply to constant curves (curves that have the same value for the length of the animation clip). Constant curves are optimized, and are less expensive than normal curves. Constant curves that have the same values as the default scene values do not write to the scene every frame.

大多数时间,Unity 都在估算动画,并将动画层动画状态机的开销保持在最低水平。向 Animator 添加另一层(无论同步与否)的成本取决于层播放的动画和混合树。层的权重为零时,Unity 会跳过层更新。

人形动画类型与通用动画类型

以下提示可帮助您选择具体类型:

  • 导入人形动画时,如果不需要 IK(反向动力学)目标或手指动画,请使用 Avatar 遮罩 (class-AvatarMask) 将它们移除。
  • 使用通用类型时,使用根运动比不使用根运动的成本更高。如果动画没有使用根运动,请确保未指定根骨骼。

场景级别优化

可进行许多优化,一些有用的提示如下:

  • 使用哈希而不是字符串来查询 Animator。
  • 实现一个小的 AI 层来控制 Animator。您可以让它为 OnStateChange、OnTransitionBegin 和其他事件提供简单回调。
  • 使用状态标记可轻松地将 AI 状态机与 Unity 状态机匹配。
  • 使用其他曲线来模拟事件。
  • 使用其他曲线来标记动画;例如,与目标匹配一起使用。

运行时优化

可见性和更新

始终通过将 Animator 的 Culling Mode 设置为 Based on Renderers 来优化动画,并禁用蒙皮网格渲染器的 Update When Offscreen 属性。这样即可在角色不可见时让 Unity 不必更新动画。

重定向人形动画
动画参考