跳到主要内容

概览 - Sequine Flow

Sequine Flow 是一个按照预定义的可分支流程执行一组 Command 的系统,执行从 Start Command 开始。

界面概览

Interface Overview

Left Pane

  1. Local Variables:用于添加在当前流程中使用的局部变量。
  2. Command List: :当前流程中包含的所有 Command 列表。你可以按 Command 类型筛选,或通过关键字搜索。点击某个条目后,会定位到其在 Command Nodes 中的具体位置。

Nodes Area

  1. Command Nodes:定义 Command 执行流程的主要区域。
  2. Create Command Context Menu:用于创建新的 Command。你可以在空白区域右键打开该菜单,或在点击某个 Command 的输出端口后左键点击空白区域,系统会自动创建并连接到对应的输入端口。

Sequine Flow 的对象类型

虽然 Sequine Flow 数据可以实现到任何 Unity 对象中,下面是我们已经提供的几种类型:

1. Sequine Flow Asset

Sequine Flow Asset 是一个存储 Sequine Flow 数据的资源文件,位于 Project 窗口中。

创建方式:打开 Assets 菜单,选择 Create -> Sequine -> Sequine Flow Asset。

Sequine Flow Asset

双击该资源即可打开编辑器。

如需执行它,需要先在场景中创建一个执行器 GameObject。 打开 GameObject 菜单,选择 Create Other -> Sequine -> Sequine Flow Executor。

Sequine Flow Asset Executor

在 C# 脚本中,你可以从 Sequine Flow Executor 组件调用 Execute 方法,并将 Sequine Flow Asset 作为参数传入。 或者勾选 Execute On Start 并指定 Flow To Execute,即可在 Start 时自动执行,无需额外 C# 脚本。

可以启用 Don't Destroy on Load,使其在加载新场景时不被销毁。如果你使用 Scene 相关 Command,并且流程跨多个场景运行,可能会需要该选项。

2. Sequine Flow Clip (Timeline)

Sequine Flow Clip 是一个携带 Sequine Flow 数据的 Timeline Clip。

在创建 Clip 之前,需要先在 Timeline 中添加 Timeline Command Track。 在 Timeline 窗口中选中已有 Timeline,点击 + 按钮 -> Calcatz.CookieCutter -> Timeline Command Track。

Timeline Track

然后在轨道空白区域右键,选择 Add Sequine Flow Clip。

Timeline Track

无需单独创建执行器,因为 该 Clip 本身就是执行器。 当 Playable Director 播放到该 Clip 的起始时间时,对应的 Sequine Flow 将自动执行。

3. Sequine Flow Component

Sequine Flow Component 是一个携带 Sequine Flow 数据的组件。

创建方式:打开 GameObject 菜单,选择 Create Other -> Sequine -> Sequine Flow Component。

在 Inspector 中展开预览区域即可打开编辑器。 如需更大的编辑界面,可以点击 Open in Command Inspector 按钮,在独立窗口中打开。

Timeline Track

无需创建执行器,因为 Sequine Flow Component 本身就是执行器

使用 C# 脚本,你可以从该 Sequine Flow Component 调用 Execute 方法。或者,你也可以直接勾选 Execute On Start,它将在 Start 时立即自行执行,而无需额外的 C# 脚本。

我们可以启用 Don't Destroy on Load,使其在加载另一个场景时不会被销毁。如果你需要使用 Scene 相关 Command,并且有一个跨多个场景运行的流程,可能会需要这样做。

警告

Sequine 使用 Odin SerializerSequine Flow 进行序列化,而它不支持 nested prefab。因此请确保不要在 nested prefab 中使用 Sequine Flow Component。不过,这种限制 不适用于 Sequine Flow AssetSequine Flow Clip

补充说明

Sequine Flow 设计为快速执行,并且尽量减少内存分配,在大多数情况下甚至可以做到零分配。这意味着一个 Sequine Flow 对象在 同一时间只能被执行一次。如果在其已经运行时再次执行,可能会由于竞态条件而触发不可预期的行为,例如当某个异步 Command 尚未完成时被再次执行。

但是,如果你需要 同一个 Sequine Flow 对象的多个实例 同时执行,你可以改为使用 Instantiate 实例化该 Sequine Flow 对象后再执行。