版本:Unity 6 (6000.0)
语言:English
状态机行为
动画层

子状态机

角色通常会有由多个阶段组成的复杂动作。与其用单个状态处理整个动作,不如识别出各个阶段,并为每个阶段使用单独的状态。例如,角色可能有一个名为“Trickshot”(技巧射击)的动作,其中包括蹲下以瞄准、射击,然后再次站立起来。

The sequence of states in a Trickshot action
“Trickshot”动作中的状态序列

虽然这对于控制目的很有用,但缺点是状态机动画控制器中的一组状态,角色或动画化的游戏对象可以处于这些状态,以及这些状态之间的一组转换和一个用于记住当前状态的变量。可用的状态将取决于游戏玩法的类型,但典型状态包括空闲、行走、跑步和跳跃等。更多信息
参见术语表
随着添加更多此类复杂动作,将变得庞大而难以管理。您可以通过在编辑器中用空白空间将状态组在视觉上分隔开来,来简化一些操作。但是,Mecanim 更进一步,允许您将一组状态折叠到状态机图中的单个命名项中。这些折叠的状态组称为子状态机

您可以通过在动画控制器通过动画层、动画状态机和动画混合树来控制动画,由动画参数控制。同一动画控制器可以被具有动画组件的多个模型引用。更多信息
参见术语表
窗口中的空白处右键单击,然后从上下文菜单中选择创建子状态机来创建子状态机。子状态机在编辑器中用一个细长的六边形表示,以将其与普通状态区分开来。

A sub-state machine
子状态机

双击六边形时,编辑器将被清空,以便您像编辑完全独立的状态机一样编辑子状态机。窗口顶部的栏显示“面包屑轨迹”,以显示当前正在编辑哪个子状态机(请注意,您可以在其他子状态机中创建子状态机,依此类推)。单击轨迹中的某个项目将使编辑器聚焦于该特定子状态机。

The breadcrumb trail
“面包屑轨迹”

外部转换

如上所述,子状态机只是在编辑器中视觉上折叠一组状态的一种方式,因此当您向子状态机进行转换时,必须选择要连接到的状态。

Choosing a target state within the Trickshot sub-state machine
在“Trickshot”子状态机中选择目标状态

您会在子状态机中注意到一个额外的状态,其名称以Up开头。

The Up state
“Up”状态

Up状态表示“外部世界”,即在视图中包含子状态机的状态机。如果您从子状态机中的状态到Up状态添加转换,系统将提示您选择要连接到的封闭机器的状态之一。

Connecting to a state in the enclosing machine
连接到封闭机器中的状态
状态机行为
动画层