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 中)。

性能和优化
旧版动画系统