Super Node¶
super node 是一行 staging,它在 Node View 里展开成一个完整的自足单元。
SuperNode = BD-P-G-D-C → BD
└── P
└── G
├── C ← eldest sibling
├── D ← middle sibling
└── [the tree's children]
Staging 里一行。Harmony 里五个节点,接好线、起好名、装进框。
它在树里长什么样¶
一个槽位的图标是一个字形,承载着它要搭建的每一个组件。这是一个完整的 super node —— BD-P-G-D-C 加一条效果链:
**Peg**
**Group**
**Drawing**(Read)
**Composite**
**效果链**
从它身上能读出三件事:
- 色带按接线顺序排列,从左到右 —— 换一下 Peg Order,前两条就互换位置,字形也跟着变。
- backdrop 是底板,不是一条色带。 它画一个框;它不拥有任何连接。(这也正是它从不改变谁汇聚什么的原因。)
- 五种效果共用同一条青色标记条。 一个不做区分的图标就是装饰,所以整条链只给一个标记,细节交给 Inspector。
全部十六种组合见 图标与指示符。
它是干什么用的¶
为了读。 一个 300 个节点的场景里,人真正会去想的东西大概只有 25 个 —— 一个角色、一件道具、一块背景板。super node 就是树让你看到那 25 个而不是那 300 个的方式。
为了改名。 给这一行改名,属于它的每个节点都跟着走:Can 变成 Ship,你一次编辑就得到 Ship、Ship-P、Ship-G、Ship-C、Ship-BD。不存在那种你去追查四个相关节点、还得祈祷没漏的环节。
为了作用域。 绿色容器(P、G 或 BD)创建一个真实的层级作用域,所以它内部的 composite 汇聚的是那份内容,别的都不收。该在一起的东西一起移动。
容器内部的兄弟顺序¶
在绿色容器内部 —— 上例里就是那个 group —— 兄弟的顺序是固定的,而且不是随便定的:
C(Composite) —— 年长的兄弟。它汇聚它下方的一切。D(Drawing) —— 中间的兄弟。- 树的子级 —— 最年幼的兄弟,被那个
C汇聚。
念出来就是:composite 排在最前面,好让它之后来的一切都流进它。
而 comp 收集子级直到第一个本身就是 comp 的子级 —— 那一个开启一个新区块,并拿走它之后的一切。见 汇聚与 sibling aggregator。
在 group 里面还是外面¶
Composite 的 Order 决定它相对于 group 待在哪,两种读法是真正不同的:
| Order | comp 待在哪 | 它接收什么 |
|---|---|---|
Inside Group |
G 内部 |
从内部接收它兄弟的输出,并把自己的输出送到 group 的 MPO 上,直到下一个输出连接 |
Outside Group |
G 外部 |
从外部接收那些年幼兄弟的输出,经由 group 的 MPO |
在 Inspector 的 Composite 区块里设置。Peg 也有同样的选择(Inside Group / Outside Group),正是它在链里对调 peg 和 group。
搭一个出来¶
没有什么特别的开关要打开 —— super node 无非是一个勾了好几个组件的槽位。三种做法:
用标签,在导入之前:
hero=BD-P-G-C
在 Inspector 里,给这个槽位勾上 Backdrop、Peg、Group 和 Composite。
从右键菜单 —— 右键 → Add → Structure,它提供同样的这些组件:
反过来读¶
Details 列按接线顺序把整个单元拼出来,所以你永远不必展开一行就知道它会搭出什么:
BACKGROUND (Backdrop > Peg > Comp)
PROPS (Backdrop > Peg > Comp)
Can (Peg > Read > Comp)
CHARACTER (Backdrop > Peg > Comp)
EFFECTS (Backdrop > Peg > Comp > Effects)
而在 Node View 里,是 Wide Bus 摆放它:master 在顶行,内容在中间行,composite 在它所汇聚的东西下方,效果带预留在底下。
把一个拆开¶
Split 把一个 super node 拆回它的各个部件 —— 见 Split 与 Merge。两种 split 模式决定这些部件是嵌套着出来(hierarchical)还是平铺出来(siblings),当一个槽位原来同时装了两个想法时,这正是你要的那个选择。
