Version: Unity 6.0 (6000.0)
语言 : 中文
性能和优化
旧版动画系统

Mecanim 常见问题解答

一般问题

Animation 窗口和 Animator 窗口之间有何差异?

使用动画窗口 (Animation Window) 在 Unity 内创建和编辑动画剪辑。您可以使用此窗口将检视面板中的几乎每个属性(游戏对象的位置、材质颜色、光照亮度、声音音量,甚至您自己脚本中的值)用来制作动画剪辑。

使用动画器窗口 (Animator Window) 可让您将现有动画剪辑资源组织到类似流程图(称为状态机)的系统中。

这两个窗口都是 Mecanim 当前动画系统(而不是旧版动画系统)的一部分。

我们使用旧版动画系统来处理角色动画。是否应改用 Mecanim 动画系统?

通常您应该这么做,因为大多数角色动画都比较复杂。

导入

为什么导入的网格附有 Animator 组件?

Unity 检测到导入的文件有动画时,它将在导入时添加动画组件。您可以在资源的导入设置 (Import Settings) 中修改此设置,为此需要在骨架 (Rig) 选项卡下的导入设置 (Import Settings) 中将动画类型 (Animation Type) 设置为 None。可一次性选择多个文件执行此操作。

层

层的排序是否重要?

是的。层的优先级是按顺序从上到下的。层设置为覆盖将始终覆盖先前的层(如果层有遮罩,则基于其遮罩)。

基础层的权重值是否应始终设置为 1?或者在使用其他层时权重是否应为 0?

基础层权重始终为 1,覆盖层将完全覆盖基础层。

有没有任何办法可以从控制器获取变量值而不使用名称字符串?

您可以使用整数来标识状态和参数。使用 Animator.StringToHash 函数来获取整数标识符值。例如:

runState = Animator.StringToHash("Base Layer.Run");
animator.SetBool(runState, false);

如果同步层中的状态与基础层中的相应状态相比具有不同的长度,会发生什么情况?

如果层的长度各不相同,那么它们将变得不同步。启用 Timing 选项,从而对当前层与源层上的状态强制同步。

Avatar 遮罩

有没有办法创建除 LeftFoot、RightFoot、LeftHand、RightHand 之外的 AvatarIKGoal?

有,支持膝盖和肘部 IK(反向动力学)。

有没有办法定义__ Avatar__用于将动画从一个骨架重定向到另一个骨架的接口。更多信息
See in Glossary
遮罩包含的变换组件?

有,对于通用剪辑,您可以定义是否导入某个变换动画。对于人形剪辑,始终导入所有人类变换,并可定义额外的变换。

动画曲线

具有曲线的动画如何与没有曲线的动画混合?

如果一段动画具有曲线,而另一段动画没有曲线,Unity 将使用连接到曲线的参数的默认值来进行混合。您可以为参数设置默认值,因此在具有曲线 (Curve) 参数的状态与没有此参数的状态之间进行混合时,将在曲线值和默认参数值之间进行混合。要为参数设置默认值,只需在 Animator Tool 窗口中设置其值(不能在 LiveLink 中)。

性能和优化
旧版动画系统