跳到主要内容

转换(Transitions)

转换定义了状态机如何以及何时在状态之间移动。它们可以使用条件来决定何时发生转换,使用动作在转换期间执行行为。

创建新转换(Creating a New Transition)

要创建转换,将鼠标放在您想要离开的状态附近,直到看到椭圆出现。点击并拖动椭圆到您想要转换到的状态。一旦您连接了两个状态,您会看到一个带有箭头图标的椭圆,指示转换的方向。

图片

创建转换

注意,您可以在两个状态之间创建多个转换。每个转换可以要求满足不同的条件才能触发,从而让您能够创建"或"条件。

图片

创建"或"转换

配置转换(Configuring a Transition)

添加转换后,选择方向指示器就可以配置转换。转换面板有三个不同的部分:转换属性、条件和插值。

转换属性(Transition Properties)

转换属性允许您自定义转换的发生方式。

图片

转换属性

持续时间(Duration)

持续时间属性描述了转换发生需要多长时间。

默认情况下,持续时间设置为零,这意味着转换立即发生。因此,当我们在这两个动画之间转换时,对象看起来像是从画板的一侧瞬间跳到另一侧。

图片

持续时间为 0 毫秒

如果我们增加持续时间,您会注意到数值越高,转换所需时间越长。

图片

持续时间为 500 毫秒

从某种意义上说,转换就像它们自己的动画。起始属性(来自状态机正在离开的状态)将插值到结束属性(状态机要去的状态的起始属性)。如果起始属性是时间轴上的第一个关键帧,结束属性是第二个关键帧,那么持续时间就是这两个关键帧之间的时间。转换比这要复杂得多,但这样思考转换将帮助您诊断状态机的问题。

图片

转换上的插值

就像时间轴上的关键帧一样,我们可以更改插值,我们将在下面详细讨论。

退出时间(Exit Time)

退出时间告诉状态机在转换之前必须播放多少状态。

默认情况下,退出时间是未选中的。如果您想启用退出时间,请使用复选框。启用设置后,您可以使用时间值或百分比。

图片

使用退出时间

例如,如果您想让状态机在转换之前播放整个动画,您可以输入动画的持续时间,或使用 100%。

退出时暂停(Pause When Exiting)

退出时暂停选项在转换期间暂停您正在离开的动画。

图片

退出时暂停

正如我们在持续时间部分讨论的,当转换发生时,第一个状态的属性与下一个状态的第一个关键帧混合。实际上,当转换发生时,您的状态机离开的动画会继续播放。

条件(Conditions)

条件是我们转换的规则。没有条件,我们的转换会持续触发,我们的状态机可能看起来要么有故障,要么只播放一个动画。条件要求我们定义一些输入,您可以在这里阅读更多相关内容。

图片

条件

添加新条件(Adding a New Condition)

要向转换添加新条件,点击条件部分旁边的加号按钮。

图片

添加新条件

每个新条件都提供一个下拉菜单,显示您添加到状态机的所有输入。配置选项会根据您选择的输入类型而不同。

注意,您可以向单个转换添加多个条件来创建"与"转换。

配置布尔值

当您配置布尔值时,您可以决定转换是在该布尔值为真还是为假时发生。

图片

配置布尔值

配置数值

当您配置数值输入时,您可以告诉转换在发生特定的数值条件时发生,比如等于特定数值,大于或小于特定数值。

图片

配置数值输入

配置触发器

当您向转换添加触发器输入时,您是在告诉转换在该触发器发生时触发。

图片

配置触发器

自定义转换(Custom Transitions)

转换条件脚本让你在内置比较不足以满足需求时定义自定义条件——例如依赖复杂逻辑或多个视图模型属性联合评估的转换。

动作(Actions)

转换也可以在发生时执行动作。

与条件不同——条件决定了转换是否能够发生,而动作在转换被触发时执行操作。

动作可用于:

  • 设置属性值
  • 报告事件
  • 对齐目标
  • 控制焦点
  • 触发脚本动作
备注

动作也可以在状态的开始或结束时触发。

参见状态动作

动作时机(Action Timing)

每个动作可以运行在以下时机之一:

  • 开始(Start) — 转换开始时运行
  • 结束(End) — 转换完成后运行

这使你可以精确控制动作相对于状态混合的时机。

创建动作(Creating an Action)

创建转换动作

  1. 添加动作: 选中一个转换后,转到 Actions 标签页,点击 + 按钮,然后选择动作类型。
  2. 配置动作: 根据动作类型进行配置。

插值(Interpolation)

您可以在转换面板底部为转换添加插值。默认情况下,插值设置为线性,但您可以使用三次曲线和保持插值。

注意,状态之间的插值在转换持续时间较长时最有效。

如果您不熟悉插值的基础知识,请阅读更多关于插值(缓动)的内容。

禁用转换(Disabling a Transition)

你可以暂时禁用转换而无需删除它。被禁用的转换会被状态机忽略——其条件不会被评估,也不会触发——直到你重新启用它。

有两种方式切换转换的启用状态:

  • 从转换面板: 选择转换并点击面板中的启用/禁用图标。
  • 从画布: 右键点击转换并选择禁用转换(如果已禁用则为启用转换)。

从右键菜单禁用转换

两种操作效果相同。当你想要隔离状态机的某部分进行测试,或暂时移除某条路径而不丢失其配置时,禁用功能非常有用。