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 有三种方式:
- 先输入你想创建的 Pad 的名字,然后选
Pad这一项 - 先选
Pad这一项,然后输入名字 - 从节点浏览器里列出的现有参数中直接选一个
Renaming Pads / 重命名 Pad
双击 Pad 的名字就能改。注意:重命名只改这一个 Pad,改完它指向的可能就是另一个参数了。如果新名字对应的参数此前不存在,系统会在这时自动新建一个。
想把所有同名的 Pad 一次性改掉,得去草图浏览器里重命名那个参数。
Anonymous Pads / 匿名 Pad
没有名字的 Pad 叫「匿名 Pad」。它不指向任何参数,但一样可以在多个 Operation 的调用之间存数据。
按住 Shift 双击一条连线,就能快速往这条连线上插一个匿名 Pad。
匿名 Pad 也可以单纯当作一个汇合点,把多条连线并成一条。
(上游此处待补图:把匿名 Pad 当作多条连线的汇合点)
The datatype of a property / 参数的数据类型
参数的数据类型有三种来路:
- Generic
- 推断得来
- 手动标注
关于第 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 / 自定义元数据
允许你给参数挂上自定义的键值数据。