简介
过渡参数(Parameters)是在 动画控制器 中定义的变量,可从脚本访问这些变量并向其赋值。这是脚本控制或影响状态机流程的方法。

过渡参数的创建
可使用 动画窗口(Animator)的 过渡参数(Parameters) 模块来设置 过渡参数 的值,在 状态机窗口(Animator)的右上角 添加(Add) 按钮处选择需要创建的 过渡参数 类型进行创建。

过渡参数基础操作
- 命名:请将鼠标移至 过渡参数 名称位置,点击鼠标左键,即可自定义此 动画层条目 名称。值得注意的是,每个 动画层条目 名字在当前 动画控制器 都是唯一且不能重复的,重复的命名将命名失败。

- 参数值定义:您可以在每个 过渡参数 右侧都查看和编辑该 过渡参数 的值。

- 自定义序列:选中一个 过渡参数 左侧并拖动到调整 过渡参数 展示序列。值得注意的是,此序列仅用于查看,不会影响状态机逻辑与流程。

- 删除:请将鼠标移至 过渡参数 位置,点击鼠标右键,即可对 过渡参数 进行删除操作。

过渡参数类型
过渡参数(Parameters)可分为四个基本类型:
| 类型 | 示图 | 描述 | 动态设置方法 |
|---|---|---|---|
| 整数(Int) | ![]() | 整数,可设置为任意整数。 | 可使用 Animator 类中的函数 SetInteger,从脚本为参数赋值。 |
| 浮点数(Float) | ![]() | 带小数部分的数字。 | 可使用 Animator 类中的函数 SetFloat,从脚本为参数赋值。 |
| 布尔值(Bool) | ![]() | 可设置为  True 或  False 两种状态。 | 可使用 Animator 类中的函数 SetBool,从脚本为参数赋值。 |
| 触发器(Trigger) | ![]() | 当被过渡使用时,由控制器重置的布尔值参数。即它同样具备  True 或  False 两种状态,但是只要在 过渡条件 中访问后,它的值就会为 False。 | 可使用 Animator 类中的函数 SetTrigger 或 ResetTrigger,从脚本为参数赋值。 |
控制状态机的逻辑
控制状态机的普遍做法,是通过脚本或触发器动态调整 过渡参数 的参数值,通过改变参数值让状态机的 过渡条件 得到满足,从而实现状态节点之间的过渡。
| -------------- 比如点击屏幕时角色会发动攻击,角色就从 空闲(Idle)状态节点过渡到 攻击(Attack)状态节点,播放 攻击(Attack)动画。 您可以先创建一个命名为 isAttack 布尔值(Bool)类型的 过渡参数(Parameters)。 ![]() 在状态机中设置从 空闲(Idle)状态节点过渡到 攻击(Attack)状态节点的过渡条件后,用 SetBool 代码修改 过渡参数 isAttack 达到控制角色在玩家点击屏幕后进入 攻击(Attack)状态。 ![]() -------------- |
以下是基于用户输入而修改参数的脚本示例。
//脚本名称为 ExampleScript
class ExampleScript
extends Component {
private _OnMouseDown:boolean = false;
private _animator;
OnStart(): void {
// 获取挂载此 动画控制器 的 Animator 组件(Component)
this._animator = this.gameObject.GetComponent(Animator);
}
OnUpdate(): void {
//判断当前帧玩家是否点击了屏幕,如果玩家在当前帧点击了屏幕,则 _OnMouseDown 的值为 真(True)
this._OnMouseDown = Input.GetMouseButtonDown(1);
//每一帧实时使用 SetBool 代码设置 Attack 过渡参数(Parameters)的值
this._animator.SetBool("isAttack",this._OnMouseDown);
}
}





