跳到主要内容

Properties / 参数

源文档地址

数据类型可以用 Property(参数)来存放数据。想看一个数据类型有哪些参数,用草图浏览器。

(上游此处待补图:草图浏览器里列出的参数)

增删参数都可以在草图浏览器里做,不过要添加参数的话,通常直接建 Pad 就行了。

如果你是从文本编程过来的,可以把参数理解成「变量」—— 但有个重要区别:每个 Operation 里只能对它写入一次。

Pads / Pad​

Pad 就是草图里的变量。 在草图里,Pad 用来读取(get)或写入(set)参数。Pad 通过名字指向参数,也就是说:同名的 Pad 指的是同一个参数。名字区分大小写。

在任何一个 Operation 里,你都可以这样理解执行顺序:先把所有 Pad 读一遍,然后执行运算,最后才把所有 Pad 写一遍。

连线从上方进入 Pad,就是往里写;连线从底部离开 Pad,就是从里面读。

一个 Pad 可以有多条连线进、也可以有多条连线出。但要注意:出去的连线可以同属一个 Operation,进来的连线却必须分属不同的 Operation。 这么想就好理解了 —— Pad 不是用来在一个 Operation 执行过程中存中间值的,它只用来在不同 Operation 的执行之间存数据。

Pad 上方出现一个小三角,提示你草图里还有另一个同名的 Pad,而且那个也被写入了。

(上游此处待补图:不同的 Operation 写入同一个 Pad)

Adding Pads / 添加 Pad​

通过节点浏览器添加 Pad 有三种方式:

  1. 先输入你想创建的 Pad 的名字,然后选 Pad 这一项
  2. 先选 Pad 这一项,然后输入名字
  3. 从节点浏览器里列出的现有参数中直接选一个

Renaming Pads / 重命名 Pad​

双击 Pad 的名字就能改。注意:重命名只改这一个 Pad,改完它指向的可能就是另一个参数了。如果新名字对应的参数此前不存在,系统会在这时自动新建一个。

想把所有同名的 Pad 一次性改掉,得去草图浏览器里重命名那个参数。

Anonymous Pads / 匿名 Pad​

没有名字的 Pad 叫「匿名 Pad」。它不指向任何参数,但一样可以在多个 Operation 的调用之间存数据。

按住 Shift 双击一条连线,就能快速往这条连线上插一个匿名 Pad。

匿名 Pad 也可以单纯当作一个汇合点,把多条连线并成一条。

(上游此处待补图:把匿名 Pad 当作多条连线的汇合点)

The datatype of a property / 参数的数据类型​

参数的数据类型有三种来路:

  1. Generic
  2. 推断得来
  3. 手动标注

关于第 1 种,Generic。 参数默认是 Generic 的,也就是没有指定数据类型。体现在 Pad 上,就是它只显示一个空心圆。

只要一个参数关联的所有 Pad 都没有被推断出类型、也没有被标注过类型,这个参数就一直是 Generic 的。

关于第 2 种,推断得来。 如果编译器从连到 Pad 上的那些连线推断出了类型,它就显示为一个实心圆。把鼠标悬停在 Pad 上,从提示框里能看到推断出来的类型。

(上游此处待补图:Generic 的 Pad vs 已推断出类型的 Pad)

关于第 3 种,手动标注。 想手动给参数定类型,就去标注它的某一个 Pad。鼠标中键点击 Pad,会打开一个小的检查器,在那里编辑类型。中键之外,也可以右键点击 Pad 的标签,选 Configure。

(上游此处待补图:标注一个 Pad)

手动标注过的 Pad 很好认:它的圆圈里有一个点。

(上游此处待补图:已标注的 Pad)

Pads vs. IOBoxes / Pad 与 IOBox​

Pad 和 IOBox 本质上是同一个东西:IOBox 有一个数值编辑器和一段注释(在右侧),Pad 则有一个名字(在左侧)。

右键 Replace... 可以在两者之间互转。

你也可以给任何 Pad 打开数值编辑器,或者把任何 IOBox 的编辑器隐藏掉。

Metadata / 元数据​

参数可以挂一些元数据作为补充信息。比如一个 Float32 参数带上 Min 和 Max,控制它的界面就能把滑块限制在这两个值之间。

元数据对那些需要读取参数的系统很有用。目前会用到元数据的有:

  • Object Editor:见帮助面板里的 “HowTo Build a Custom Editor”
  • Channel Browser
  • Channel Bindings

要给一个参数定义元数据,得先选中指向它的某个 Pad,然后通过 Inspector(英文)查看。

想用程序读取元数据,见帮助面板里的 “HowTo Reflect over Property Metadata”。

在 Inspector 中看到的一个 Float32 类型的参数

Common Metadata / 通用元数据​

  • Default:界面可以用它来重置数值

以下这些对所有类型都可用:

  • Order:这个参数在列表里相对于同级参数的排列顺序
  • Widget:这个参数最好用哪种控件来操作
  • Can be Published:这个参数能不能作为 Channel 发布出去
  • Visible in ObjectEditor:这个参数在 ObjectEditor 里是否可见
  • Read-Only:这个参数是只读,还是也可以写
  • Don't Serialize:
  • Label:给人读的标识
  • Description:对这个参数更详细的描述
  • Tags:与这个参数关联的一组词

Metadata specific for number types / 数值类型专有的元数据​

  • Min:允许的最小值(含)
  • Max:允许的最大值(含)

Custom Metadata / 自定义元数据​

允许你给参数挂上自定义的键值数据。