在角色动画系统中,受击、技能、连招等临时性、突发性的动态动画表现往往需要随时插入,并与待机、移动或其他基础动画平滑衔接。

在 Mecanim 动画系统的 Animator 中,如果使用状态机实现这类效果,通常需要为每个临时动画单独创建状态,并配置进入和退出过渡。随着动画数量不断增加,状态节点和过渡连线也会越来越复杂,状态机很容易变成难以维护的“蜘蛛网”。

打开网易新闻 查看精彩图片

为简化临时动画的组织、播放与混合,团结引擎 1.10 版本的 AnimGraph 新增了 Slot 节点与 ClipLine 资产。同时,Timeline 1.7.7-t1 进一步提供 AnimGraph Track、BlendTree Playable Asset 和 Sections 等能力,扩展 Timeline 的动画内容与流程编排方式。

这些能力分别面向两类动画工作流:

  • Slot 与 ClipLine:适合由玩家输入或游戏逻辑动态触发的受击、技能和连招;

  • Timeline:适合对角色动画、镜头、特效和音频等内容进行可视化编排,并控制完整演出流程。

下面将分别介绍这两类能力。

一、通过 Slot 与 ClipLine 播放动画

架构概述

Slot 系统由三个层次组成:

  • 执行层:通过 C# 脚本或 ScriptGraph(Function / EventGraph)中的执行节点触发播放,指定目标 Slot 名称。

  • 动画混合层:SlotManager 管理所有 Slot 实例,每个 Slot 是一个独立的混合通道,由 Slot Name 标识。Slot 节点是 Slot 在 AnimGraph 中的锚点,负责将 Slot 的输出接入动画图。

  • 数据层:ClipLine 定义了要播放的动画片段、过渡参数和事件。

Slot 节点:将临时动画接入 AnimGraph

在 AnimGraph 编辑器中右键,选择AnimationNode → Slot Node即可创建。Slot 节点有一个Default Motion输入端口,用于连接基础动画(如 Locomotion);当没有活跃片段时输出该姿势,有活跃片段时与之混合。输出端口 Pose 即混合后的最终姿势。

每个 Slot 都可以理解为一条独立的动画播放通道,并通过 Slot Name 进行标识。系统默认提供 "DefaultSlot",开发者也可以根据需要创建多个 Slot,例如分别控制角色的全身动画和上半身动画。

多个 Slot 节点可以引用同一个 Slot Name,复用同一份动画结果;也可以使用不同的 Slot Name,构建相互独立的动画通道。

打开网易新闻 查看精彩图片

ClipLine 资产:组织动画内容与播放事件

Slot 节点播放的动画内容、过渡参数和事件都由ClipLine来定义。

ClipLine 是 Slot 系统的数据载体,它既可以是独立的 ScriptableObject 资产,也可以作为内联数据(ClipLineData)直接嵌入执行节点或脚本中。

一个 ClipLine 由一个或多个SlotRow组成。每个 SlotRow 对应一条独立的播放轨道,用于指定目标 Slot 和待播放的动画片段;淡入淡出、速度、循环和事件等设置则由 ClipLine 统一管理。

打开网易新闻 查看精彩图片

Sections(段落):跳转与循环

除了按顺序播放片段,ClipLine 还支持通过Sections将时间轴划分为多个逻辑段落,实现段落间的跳转和循环控制。例如,可以将一套攻击动画划分为起手、一段攻击、二段攻击和结束等 Section,再根据玩家输入控制后续跳转,实现连招衔接或提前结束。

打开网易新闻 查看精彩图片

ClipLine 事件系统

在动画播放过程中,往往需要在特定时间点触发 VFX、音效或逻辑回调。ClipLine 提供了两种事件类型来满足这一需求:

-ClipLineEvent(点事件)

ClipLineEvent 会时间轴上的指定时间点触发一次,适合执行一次性操作。内置类型包括调用 AnimGraph Function、调用 UnityEvent(仅场景 Inspector 可用)和通过 SendMessage 向 Owner GameObject 发送消息。

打开网易新闻 查看精彩图片

如果内置类型无法满足需求,可以通过继承ClipLineEvent 并实现 Trigger(AnimGraphManager manager) 方法来创建自定义点事件,在触发时间点执行任意逻辑。

-ClipLineRangeEvent(范围事件)

有些效果需要在动画的某一段时间内持续生效,而非触发一次就结束。ClipLineRangeEvent在一段时间范围内持续生效,并提供 OnEnter、OnUpdate 和 OnExit 生命周期,适合攻击判定窗口、持续 VFX、音频或临时 Prefab 等场景:

打开网易新闻 查看精彩图片

ClipLine 内置了音频、Prefab、Particle System、Visual Effect Graph、AnimGraph Function、UnityEvent 和 Send Message 等常用事件类型,无需编写额外代码即可直接配置。

与 ClipLineEvent 类似,ClipLineRangeEvent 也支持自定义。

打开网易新闻 查看精彩图片

执行节点:触发播放的入口

前面介绍了 Slot 节点的混合机制和 ClipLine 的数据结构,那么如何在运行时触发播放?这就要用到执行节点

执行节点是 ScriptGraph(Function 或 EventGraph)中的节点,用于在运行时向 Slot 发送播放指令。SlotManager 负责处理混合逻辑,动画的出口在 AnimGraph 中的 Slot 节点。

-Play Clip via Slot 节点

最简单的触发方式,播放单个 AnimationClip。适合不需要事件、不需要多片段序列的场景。

打开网易新闻 查看精彩图片

-Play ClipLine 节点

当需要播放多片段序列、触发事件或同时驱动多个 Slot 时,使用 Play ClipLine 节点。它会遍历 ClipLine 中的所有 SlotRow,将每一行播放到其 SlotName 对应的 Slot。

打开网易新闻 查看精彩图片

-Stop 节点

停止指定 Slot(或所有 Slot)中正在播放的片段,触发淡出过渡。对于循环动画片段或禁用了 Blend Out 的片段,这是唯一的停止方式。

打开网易新闻 查看精彩图片

示例展示

在实际使用中,可以通过玩家输入触发 Play ClipLine,将攻击动画发送到指定 Slot,并通过 Slot 节点接入 AnimGraph。ClipLine 中的 Sections 可以控制连招段落之间的跳转,ClipLineEvent 和 ClipLineRangeEvent 则可以同步触发攻击判定、VFX、音效和其他游戏逻辑。

二、Timeline 动画与流程编排

AnimGraph Track:Timeline 兼容与功能扩展

使用 AnimGraph Track 需要团结引擎Timeline 1.7.7-t1版本。

除了通过 ScriptGraph 触发 Slot 播放,开发者还可以使用 AnimGraph Track,将 Timeline 中编排的动画接入 AnimGraph。

AnimGraph Track 继承自 Animation Track,使用方式与标准 Animation Track 基本一致,但绑定对象由 Animator 替换为 AnimGraphManager。通过设置 Slot Name,还可以复用 Slot 系统,让 Timeline 动画继续参与 AnimGraph 内的混合和后续处理。

AnimGraph Track 支持两种播放模式:

  • 普通模式:Slot Name 为空时,由 Timeline 直接播放动画;

  • Slot 模式:设置 Slot Name 后,Timeline 动画会被发送到对应 Slot,再通过 Slot 节点接入 AnimGraph。

在 Slot 模式下,AnimGraph Track 处于活动状态时,其动画会与 Slot 节点的 Default Motion 按权重混合;Track 不活动时,Slot 节点继续输出 Default Motion。如果 Default Motion 未连接,则输出默认姿势。

-使用 Slot 模式

1. 前提条件:AnimGraph 主图中存在 Slot 节点,且 slotName 已设置

2. 创建 AnimGraph Track:在 Timeline 中点击 "+" 按钮,选择AnimGraph Track,绑定到 AnimGraphManager

3. 设置 Slot Name:选中 AnimGraph Track,在 Inspector 中设置 Slot Name,值必须与 Slot 节点的 slotName 一致

4. 添加动画剪辑:在 AnimGraph Track 上添加 Animation Playable 资产

5. 运行:播放带有 TimelineAsset 的 PlayableDirector

BlendTree Playable Asset:在 Timeline 中使用混合树

标准的 Animation Playable Asset 一次播放一个 AnimationClip。但在实际使用中,有些动画并不适合被拆成多个独立的 Timeline Clip。例如,在过场动画中使用不同的相机视角或角色效果等。如果将每一种混合结果都单独编排到 Timeline 中,不但会产生大量 Clip,也很难在运行时根据参数动态改变混合结果。

为此,AnimGraph Track 增加了对 BlendTree Playable Asset 的支持。它允许用户直接在 Timeline Clip 中配置并播放 BlendTree,不需要额外创建 Animator Controller。例如 Idle–Walk–Run 或二维方向移动,可以使用 BlendTree Playable Asset。

在 AnimGraph Track 上鼠标右键,选择 Add Blend Tree Playable Asset,即可创建一个新的 BlendTree Clip。

打开网易新闻 查看精彩图片

选中该 Clip 后,可以在 Inspector 中看到与 Animation Playable Asset 类似的基础设置。不同之处在于,它不直接引用单个 AnimationClip,而是通过Edit BlendTree按钮进入 BlendTree 编辑界面。

其中,BlendTree 由对应的 BlendTree Playable Asset 自行管理,不需要额外创建或拖入外部 BlendTree 资产。

编辑完成后返回 Timeline,修改结果会同步到用于播放的数据,并刷新 Timeline 中的对应内容。

打开网易新闻 查看精彩图片

点击 Edit BlendTree,进入对应的 BlendTree 编辑界面。在这里可以添加 AnimationClip、设置混合类型、调整阈值或二维位置,也可以继续嵌套子 BlendTree。

  • Simple 1D 显示 ParameterX,适合使用一个参数控制待机、行走和奔跑等动画。

  • 2D BlendTree 显示 ParameterX 和 ParameterY,适合根据方向、速度等两个参数混合动画。

  • 如果 BlendTree 中嵌套了子 BlendTree,子树中的参数也会显示在面板中,并带上对应的 BlendTree 名称。

打开网易新闻 查看精彩图片

配置好 BlendTree 的结构之后,还需要设置参数值,BlendTree 才能计算每个子动画的混合权重。

BlendTree Playable Asset 会在 Inspector 中显示 Blend Parameters:

当前 Blend Parameters 面板暂不支持编辑 Direct BlendTree 中每个子动画的直接权重。使用 Direct BlendTree 时,Inspector 会显示对应提示。

修改参数后,Timeline 会立即使用新的参数重新计算混合结果,方便在编辑过程中预览动画表现。

打开网易新闻 查看精彩图片

Timeline Sections:扩展 Timeline 的播放流程

Timeline Sections 为 Timeline 增加了分段、跳转与循环能力。开发者可以通过 Timeline Section Track,将一条 Timeline 划分为多个 Section,并通过Next Section设置各段落之间的播放关系。

打开网易新闻 查看精彩图片

每个 Section 以 Marker 的形式标记段落起点。当前 Section 播放结束后,可以:

  • 停止播放;

  • 跳转到指定 Section;

  • 跳转回自身形成循环。

多个 Section 还可以组成线性流程、共享公共节点,或在运行时根据逻辑切换播放路径。这样,Timeline 不再只能从头到尾线性播放,而可以根据演出逻辑组织为可跳转、可循环的段落结构。

Timeline Section Track Inspector 会以链路形式展示所有 Section 及其连接关系,方便开发者查看和修改播放流程。Track 还支持分别设置编辑器预览与运行时循环。

打开网易新闻 查看精彩图片

对于只应播放一次的剧情过门或转场,可以启用Play Once。该 Section 完整播放并跳转后,再次被解析时会自动跳过。

打开网易新闻 查看精彩图片

总结

团结引擎 1.10 版本新增的 Slot 节点与 ClipLine 资产,为 AnimGraph 提供了更加灵活的运行时动画播放能力。

通过 Slot 节点,开发者可以按需插入受击、技能和连招等临时动画,并完成与基础动画之间的平滑过渡;ClipLine 则进一步将动画片段、过渡参数、Sections 和事件组织成可编辑、可复用的数据资产。

Timeline 1.7.7-t1 则进一步扩展了可视化动画编排能力。AnimGraph Track 可以将 Timeline 动画接入 AnimGraph,BlendTree Playable Asset 支持在 Timeline 中直接创建和播放混合树,Timeline Sections 则让完整演出能够根据运行逻辑进行分段与跳转。

从运行时技能与连招,到包含角色动画、镜头、特效和音频的 Timeline 流程编排,这些新增能力进一步扩展了团结引擎的动画组织与播放控制方式。

Unity 官方微信

第一时间了解 Unity 引擎动向,学习进阶开发技能

每一个“点赞”、“在看”,都是我们前进的动力

打开网易新闻 查看精彩图片