使用 Animator 组件可以将动画分配给场景中的游戏对象。Animator 组件需要引用 Animator Controller,后者定义要使用哪些动画剪辑,并控制何时以及如何在动画剪辑之间进行混合和过渡。
如果游戏对象是具有Avatar定义的人形角色,还应在此组件中分配Avatar,如下所示:
下图显示了如何将各种资源(动画剪辑、Animator Controller 和 Avatar)一起汇集在游戏对象的 Animator 组件中:
另请参阅状态机、混合树、Avatar、Animator Controller
属性: | 功能: | |
---|---|---|
Controller | 附加到此角色的 Animator Controller。 | |
Avatar | 此角色的Avatar。(如果 Animator 用于对人形角色进行动画化) | |
Apply Root Motion | 选择从动画本身还是从脚本控制角色的位置和旋转。 | |
Update Mode | 此选项允许您选择 Animator 何时更新以及应使用哪个时间标度。 | |
Normal | Animator 与 Update 调用同步更新,Animator 的速度与当前时间标度匹配。如果时间标度变慢,动画将通过减速来匹配。 | |
Animate Physics | Animator 与 FixedUpdate 调用同步更新(即,与物理系统步调一致)。如果要对具有物理交互的对象(例如可四处推动刚体对象的角色)的运动进行动画化,应使用此模式。 | |
Unscaled Time | Animator 与 Update 调用同步更新,但是 Animator 的速度忽略当前时间标度而不顾一切以 100% 速度进行动画化。此选项可用于以正常速度对 GUI 系统进行动画化,同时将修改的时间标度用于特效或暂停游戏。 | |
Culling Mode | 您可以为动画选择的剔除模式。 | |
Always Animate | 始终进行动画化,即使在屏幕外也不要剔除。 | |
Cull Update Transforms | 未显示渲染器时,禁用变换组件的重定向、IK(反向动力学)和写入。 | |
Cull Completely | 未显示渲染器时,完全禁用动画。 |
Animator 组件底部的信息框为您提供 Animator Controller 使用的所有剪辑中所用数据的明细。
动画剪辑包含“曲线”形式的数据;曲线表示值如何随时间变化。这些曲线可描述对象的位置或旋转、人形动画系统中肌肉的弯曲或者剪辑内的其他动画值(例如改变的材质颜色)。
下表说明了每个数据项代表的内容:
标签 | 描述 |
---|---|
Clip Count | 分配给此 Animator 的 Animator Controller 使用的动画剪辑总数。 |
Curves (Pos, Rot & Scale) | 由 Unity 用于动画化游戏对象位置、旋转或缩放的曲线总数。这些曲线用于不属于标准人形骨架的动画游戏对象。在对人形 Avatar 进行动画化时,这些曲线会显示额外非肌肉骨骼(例如尾巴、飘逸的布料或悬垂的吊坠)的计数。如果您有人形动画并发现意外的非肌肉动画曲线,表示动画文件中可能有不必要的动画曲线。 |
Muscles | 此 Animator 用于人形动画的肌肉动画曲线数量。这些是用于对标准人形 Avatar 肌肉进行动画化的曲线。除了 Unity 的标准 Avatar 中所有人形骨骼的标准肌肉运动外,此处还包括用于存储根运动位置和旋转动画的两条“肌肉曲线”。 |
Generic | 由 Animator 用于动画化其他属性(如材质颜色)的数字(浮点)曲线数量。 |
PPtr | 精灵动画曲线(由 Unity 的 2D 系统使用)的总数 |
Curves Count | 动画曲线的合计总数 |
Constant | 优化为常量(不变)值的动画曲线数量。如果动画文件包含了具有不变值的曲线,Unity 会自动选择此项。 |
Dense | 使用“密集”数据(通过线性内插的离散值)存储方法进行优化的动画曲线数量。与“流”方法相比,此方法使用的内存少得多。 |
Stream | 使用“流”数据(这些值具有用于曲线插值的时间和切线数据)存储方法的动画曲线数量。与“密集”方法相比,此数据占用的内存多得多。 |
如果导入动画剪辑时在动画导入引用中将“Anim Compression”设置为“Optimal”,Unity 将使用启发式算法来确定最好使用密集还是流方法来存储每条曲线的数据。