Skip to content

简介

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

![Animator Controller 用户手册编辑反馈15476.png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/State_Machine/Animator Controller 用户手册编辑反馈15476-jtpiwuothn.png)

过渡参数的创建

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

![Animator Controller 用户手册编辑反馈15595.png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/State_Machine/Animator Controller 用户手册编辑反馈15595-kwpgfxeaon.png)

过渡参数基础操作

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

过渡参数001.gif

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

过渡参数002.png

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

![bandicam 2023-11-13 14-28-40-820202311131430111.gif](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Audio/bandicam 2023-11-13 14-28-40-820202311131430111-epqobzilwv.gif)

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

image.png

过渡参数类型

过渡参数(Parameters)可分为四个基本类型:

类型示图描述动态设置方法
整数(Int)过渡参数006.png整数,可设置为任意整数。可使用 Animator 类中的函数 SetInteger,从脚本为参数赋值。
浮点数(Float)过渡参数007.png带小数部分的数字。可使用 Animator 类中的函数 SetFloat,从脚本为参数赋值。
布尔值(Bool)过渡参数008.png可设置为 ![Animator Controller 用户手册编辑反馈16378.png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Audio/Animator Controller 用户手册编辑反馈16378-nmvtyhofhb.png) True 或 ![Animator Controller 用户手册编辑反馈16387.png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Audio/Animator Controller 用户手册编辑反馈16387-mrevnkbiri.png) False 两种状态。可使用 Animator 类中的函数 SetBool,从脚本为参数赋值。
触发器(Trigger)过渡参数009.png当被过渡使用时,由控制器重置的布尔值参数。即它同样具备 ![Animator Controller 用户手册编辑反馈16621.png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Audio/Animator Controller 用户手册编辑反馈16621-eudrwpvkhh.png) True 或 ![Animator Controller 用户手册编辑反馈16630.png](https://editordocs.blockmango.com/res/image/book188/ver326/zh-CN/Audio/Animator Controller 用户手册编辑反馈16630-ukvseanqow.png) False 两种状态,但是只要在 过渡条件 中访问后,它的值就会为 False。可使用 Animator 类中的函数 SetTriggerResetTrigger,从脚本为参数赋值。

控制状态机的逻辑

控制状态机的普遍做法,是通过脚本或触发器动态调整 过渡参数 的参数值,通过改变参数值让状态机的 过渡条件 得到满足,从而实现状态节点之间的过渡。

--------------
比如点击屏幕时角色会发动攻击,角色就从 空闲(Idle)状态节点过渡到 攻击(Attack)状态节点,播放 攻击(Attack)动画。

您可以先创建一个命名为 isAttack 布尔值(Bool)类型的 过渡参数(Parameters)。
过渡参数011.png


在状态机中设置从  空闲(Idle)状态节点过渡到 攻击(Attack)状态节点的过渡条件后,用 SetBool 代码修改 过渡参数 isAttack 达到控制角色在玩家点击屏幕后进入 攻击(Attack)状态。
过渡参数010.png
--------------

以下是基于用户输入而修改参数的脚本示例。

typescript
//脚本名称为 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);
    }

}