Skip to content

流控制

在编程时,开发者需要控制计算机每一步需要执行的动作,类似于一条流水线,从上到下依次进行。条件分支、循环,这些是流控制中最重要的概念。

在 Virtools 中,流控制主要通过 Logics/Streaming 和 Logics/Looping 类的 BB 来实现。

条件分支

条件分支,即大多数编程语言中的 if 语句。在 Virtools 中有多种实现方式:

  • Test:简单比较两个数值,支持常见的数值比较与空值判断。
  • Binary Switch:根据一个 Boolean 值进行分支,上游数据需自行转化为 Boolean。
  • Switch On Parameter:类似于 C 语言中的 switch 语句,根据固定的条件参数发生跳转。

如果分支是为了选择不同变量,可以使用 Parameter Selector,不同的逻辑输入对应不同的参数,最后只有一个逻辑输出。

迭代循环

最简单的循环即直接将末尾的 BB 连接至开头,形成一个闭环即可。

如果我们需要引入条件,或者是在特定的语境下进行循环,则需要用到如下的 BB:

  • While:在条件成立时无限循环。
  • Iterator:对 ArrayRow(行)进行迭代循环,并且拿到每一行的数据。
  • Group Iterator:对 Group 中的物体进行迭代循环,并且拿到组内的每一个对象。
  • Hierarchy Parser:对一个物体的子级进行迭代循环,并且拿到目标物体的每一个子级。

如果需要在一定的值、范围、次数,或一定时间内,进行循环,可用使用以下 BB:

  • Timer:在指定时间内循环。
  • Counter:在指定次数内循环。
  • Linear Progression:将值从 A 演变为 B,用 step 参数控制循环次数。
  • Bezier Progression:将值从 A 演变为 B,演变的过程遵循给定的贝塞尔函数。

特殊

Virtools 基于 BB 的脚本支持多线同时进行,因此会有一些特殊的 BB 专门服务于特殊的场景:

  • Wait For All:等待所有输入全部激活后才激活输出。
  • Keep Active:激活一次除 Reset 以外的任意输入后,会不断激活对应的输出。激活 Reset 可以停止循环。

更多

由于此类 BB 均为 Virtools 所提供,因此他们都能查到使用文档。建议在了解到脚本能做到什么程度的控制后就自行尝试。

Released under the MIT License.