跳到主要内容

概览 - 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 Serializer 对 Sequine Flow 进行序列化,而它不支持 nested prefab。因此请确保不要在 nested prefab 中使用 Sequine Flow Component。不过,这种限制 不适用于 Sequine Flow Asset 和 Sequine Flow Clip。

补充说明​

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

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