使用指南
核心概念 / 节点、引脚和连线
用可操作的语言解释节点、执行引脚、数据引脚、类型匹配和常见连线错误。
如果一张 Script Graph 是一段小小的文章,那么:
- 节点 是名词和动词——它代表”是什么”或”做什么”。
- 引脚 是标点——它决定别的节点能不能”跟”进来。
- 连线 是句法——它说明先做什么、再做什么,值从哪里流到哪里。
理解这三样东西,几乎就理解了 Script Graph 的全部核心。
有两种线,别把它们混在一起
新人最常见的错觉是”线就是线”。其实工作流里有两种颜色截然不同的线,各自负责一件事:
| 线 | 看什么 | 解决什么问题 |
|---|---|---|
| 执行流 | 通常从左到右,连接执行引脚 | 决定「下一步执行哪个节点」 |
| 数据流 | 连接字符串、数字、节点、组件、资产等数据引脚 | 决定「某个输入值从哪里来」 |
执行流只管顺序,不传值;数据流只传值,不主动触发。一个节点想真正跑起来,通常两样都要有——从执行流被触达,并且它需要的数据都准备好了。
想象一下做菜:执行流是”什么时候下锅”,数据流是”锅里放什么”。少一样都做不出菜。
一个最小例子
回到最经典的”加载事件 → 打印字符串”,其实里面藏着两件独立的事:
- 加载事件的执行输出接到打印字符串的执行输入 → 决定了”什么时候打印”。
- 打印字符串的文本输入填入
Hello Script Graph→ 决定了”打印什么”。
只做第一步,节点会执行但没内容;只做第二步,节点根本不会被触发。缺一不可。
输入在左,输出在右
节点的引脚位置有一套统一约定:
- 左侧引脚 = 输入:等着别人把执行或数据传进来。
- 右侧引脚 = 输出:把执行或数据传给下一个节点。
- 事件引脚:用来绑定回调,比如按钮点击、键盘输入、自定义事件。
一个输入引脚同一时间只接受一条同类型的线。你如果再接一条同类的,旧线通常会被替换或提示”不兼容”。这个设计是为了避免一个输入同时收到几个来源导致结果不确定——图会因此更好读,行为也更好预测。
默认值、连线值和执行时读取
很多输入引脚有两副面孔:它可以直接在面板里填默认值,也可以接一条数据线。理解这个双面性能省下很多”看着接了线却不生效”的调试时间:
| 输入状态 | 执行时用什么 |
|---|---|
| 没接线,填了默认值 | 使用面板里的默认值 |
| 接了线 | 使用上游节点的输出 |
| 接了线,但上游输出为空 | 使用空值,通常不会自动回退到默认值 |
| 类型不匹配 | 连线失败,或编译时报类型错误 |
第三行特别容易踩坑:“我明明填了默认值,为什么还是空?“——因为你后来接了一条线,默认值就被顶替了。
另一个关键点:数据不是提前推送的,而是节点执行时”回头去问”上游要。也就是说:
查找节点
→ 输出 Node
获取 Button 组件
→ 执行时会读取查找节点的输出
如果查找路径写错,获取 Button 组件 才会拿到空值——这时你需要打印中间输出,而不是只看最后节点的现象。
类型匹配
数据线要求两端类型兼容。常见类型:
| 类型 | 常见来源 |
|---|---|
| 字符串 | 名称、路径、日志文本、场景名 |
| 数字 | 坐标、速度、分数、时间 |
| 布尔值 | 开关、条件判断结果 |
| 节点 | 场景节点、查找结果、当前节点 |
| 组件 | Button、Label、Sprite、AudioSource 等 |
| 资产 | Prefab、SpriteFrame、AudioClip、SceneAsset |
| 枚举 | 状态、方向、品质、事件名 |
| 结构体 | 一组字段组成的复合数据 |
如果线拉不上,先问两个问题:
- 两端类型是不是同一类?(Node 不能直接接到 Component,需要中间的”获取组件”节点)
- 是不是需要一个”桥梁节点”?(比如”构造结构体”、“枚举值”、“类型转换”)
常见连线错误
| 现象 | 常见原因 | 解法 |
|---|---|---|
| 节点不执行 | 没有执行流接入 | 从事件、函数入口或上游节点接一条执行线过来 |
| 数据为空 | 只连了执行线,数据输入没有值 | 给输入填默认值,或接一条数据线 |
| 线接不上 | 两端类型不兼容 | 换成同类型节点,或先用转换节点做桥接 |
| 分支永远走同一路 | 条件输入没有变化 | 打印条件值,看看数据是从哪儿来的 |
| 事件没响应 | 只创建了事件节点,没绑定目标 | 检查事件绑定节点,以及是否配对了解绑时机 |
新手搭图的推荐顺序
比”我先想清楚再一次搭完”更有效的做法是:每一步都能被观察。
- 先放入口节点。
- 接一个调试打印,确认入口能触发。
- 加入一条真实业务线。
- 每接入一个条件、循环、或异步节点,就打印关键输入和输出。
- 一切跑通后,再删掉那些临时打印。
这样即使某一步坏了,你能马上定位到”是刚才那两三个节点之一”。相反,如果你一次放十几个节点再运行,出错时几乎无法判断问题出在入口、数据、分支、异步完成、还是最终动作。
保持”每一步都有可观测的产出”,是所有可视化编程的黄金习惯。
继续阅读
- 想理解入口和事件从哪来 → 事件、执行流和数据流。
- 想查具体节点的引脚 → 节点手册。