Version: 6000.3
语言: 中文
创建自定义试玩对象
Mecanim 常见问题

性能和优化

本页包含一些提示,可帮助您在 Unity 中获得最佳性能,涵盖动画系统运行时优化

注意: 有关在 3D 应用程序中对角色进行建模以在 Unity 中获得最佳性能的提示,请参阅对角色进行建模以获得最佳性能

动画系统

控制器

当控制器未设置为时,Animator 不会花时间进行处理

简单动画

播放单曲动画剪辑可用于动画角色或简单动画的动画数据。它是一个简单的“单元”运动片段,例如(一个特定实例)“空闲”、“行走”或“运行”。更多信息
请参阅术语表
没有混合会使 Unity 比旧版动画系统慢。旧系统非常直接,对曲线进行采样并直接写入变换。Unity 当前的动画系统具有用于混合的临时缓冲区,并且对采样的曲线和其他数据进行了额外的复制。当前的系统布局针对动画混合和更复杂的设置进行了优化。

缩放曲线

为缩放曲线设置动画比为平移和旋转曲线设置动画更昂贵。若要提高性能,请避免缩放动画。

注意: 这不适用于常量曲线(动画剪辑长度值相同的曲线)。常量曲线经过优化,并且比普通曲线成本更低。与默认值具有相同值的常量曲线场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您可以放置环境、障碍物和装饰,实质上是分批设计和构建游戏。更多信息
请参阅术语表
值不会每帧都写入场景。

大多数时候,Unity 会评估动画,并将开销保留为动画层动画层包含一个动画状态机,用于控制模型或模型的一部分的动画。例如,如果您有一个用于行走或跳跃的全身层,以及一个用于上半身运动(如投掷物体或射击)的较高层。较高的层优先于它们控制的身体部位。更多信息
请参阅术语表
动画状态机动画器控制器中的图表,用于控制动画状态的交互。每个状态都引用一个动画混合树或单个动画剪辑。更多信息
请参阅术语表
到最低限度。向动画器添加另一个图层的成本,无论是否同步,都取决于该图层播放的动画和混合树。当图层的权重为零时,Unity 会跳过图层更新。

人形与通用动画类型

这些提示可帮助您在这些类型之间做出选择:

  • 导入时人形动画使用人形骨架的动画。人形模型通常具有相同的基本结构,代表身体、头部和四肢的主要关节部分。这使得将动画从一个人形骨架映射到另一个人形骨架变得容易,从而允许重定向和反向运动学。更多信息
    请参阅术语表
    使用头像用于将动画从一个绑定重定向到另一个绑定的界面。更多信息
    请参阅术语表
    遮罩(class-AvatarMask)用于删除IK目标或手指动画(如果不需要它们)。
  • 使用泛型时,使用根运动角色根节点的运动,无论它是由动画本身控制还是外部控制。更多信息
    请参阅术语表
    比不使用它更昂贵。如果你的动画不使用根运动,请确保你没有指定根骨骼。

场景级优化

可以进行许多优化,一些有用的提示包括:

  • 使用哈希而不是字符串来查询 Animator。
  • 实现一个小型 AI 图层来控制动画师。您可以让它为 OnStateChange、OnTransitionBegin 和其他事件提供简单的回调。
  • 使用状态标签轻松匹配您的 AI状态机Animator 控制器中角色或动画游戏对象可以处于的状态集,以及这些状态之间的一组转换和用于记住当前状态的变量。可用的状态取决于游戏的类型,但典型的状态包括空闲、行走、奔跑和跳跃等。更多信息
    请参阅术语表
    到 Unity 状态机。
  • 使用其他曲线来模拟事件。
  • 使用其他曲线来标记动画;例如,结合使用目标匹配一种脚本函数,允许您以手或脚在特定时间落在特定位置的方式移动角色。例如,角色可能需要跳过垫脚石或跳跃并抓住头顶光束。更多信息
    请参阅术语表
    .

运行时优化

可见性和更新

始终通过将动画师的 剔除模式(Culling Mode) 设置为 完全剔除(Cull Completely) 来优化动画,并禁用蒙皮网格渲染器的 在屏幕外更新(Update When Offscreen) 属性。这样可以避免 Unity 在角色不可见时更新动画。

创建自定义试玩对象
Mecanim 常见问题