Mecanim 性能和优化        

此页面包含一些有助于您获得 Mecanim 最佳性能的提示,包括角色设置、动画系统和运行时优化。

角色设置

骨骼块数
在某些情况下,您需要创建拥有大量骨骼的角色,例如想要大量定制附件时。这些额外的骨骼会增加发布大小,每增加一块骨骼,您预期会要承担相对加工成本。例如,在已有 30 块骨骼的装置上增加 15 块骨骼,则在通用 (Generic) 模式下要多花 50% 的时间进行处理。请注意,可以在类人模式下添加骨骼。动画播放没有使用额外骨骼时,则就没什么加工成本。如果它们的附件不存在或隐藏,该成本将更低。
多个蒙皮网格
只要可能,合并蒙皮网格。将角色分成两个蒙皮网格渲染器就性能方面来说是个坏主意。如果角色只用一种材质,效会果更好,但在某些情况下,可能需要更多材质。

动画系统

控制器
当控制器未设为动画器时,动画器不会花时间进行处理。
简单的动画
播放没有融合的单个动画片段会导致 Mecanim 比旧版动画系统慢。旧版系统非常直接,会取样曲线,并将曲线直接写入变换组件。Mecanim 拥有一个用于融合的临时缓冲区,还有一些取样曲线和其他数据的额外副本。Mecanim 布局已经优化,以便进行动画融合和更复杂的设置。
缩放曲线
确保任何动画片段上均无缩放曲线。您可以编写一个资源后置处理程序,来删除缩放曲线或就其提出警告;请参阅 AssetPostprocessor 参考,获取更多信息。
Mecanim 大多数时间都在评估动画,AnimationStateMachines 的间接费用控制在最低水平。向动画器(不论是否同步)再添加一层的费用取决于该层所播放的动画混合树。当层的重量为零时,则将跳过层更新过程。
类人模式对比通用模式
这些提示有助于您在这些模式之间作出选择:
  • 导入类人 (Humanoid) 动画时,使用 BodyMask 来删除不需要的 IK 目标 (IK Goals) 或手指动画。

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

  • 在安卓 (Android) 上,由于 NEON 目前不支持安卓,获得的性能会更差。类人模式特别偏重使用数学,因此如果没有 NEON,它会极易变慢 2-2.5 倍。

Mecanim 场景
可进行多项优化,一些有用的提示包括:
  • 使用哈希而非字符串来查询动画器 (Animator)

  • 执行小 AI 层 (AI Layer) 来控制动画器 (Animator)。您可以使之提供 OnStateChangeOnTransitionBegin 等的简单回调。

  • 使用状态标签 (State Tags)AI StateMachineMecanim StateMachine 轻松匹配。

  • 使用额外曲线来模拟事件 (Events)

  • 使用额外的曲线来标记动画,例如配合目标匹配。

运行时优化

可见性和更新
始终通过设置动画器的剔除模式 (Culling Mode)基于渲染器 (Based on Renderers) 来优化动画,然后禁用蒙皮网格渲染器的在屏幕外时更新 (Update When Offscreen) 属性。这样,动画在角色不可见时不会更新。
,