节点
内置节点目录,每个创建浮窗分类一页,逐个列出节点签名
内置目录共 655 个节点,分布在 28 个分类中。分类就是你在创建浮窗里导航时看到的分组,因此这些页面的组织方式与编辑器一致。Studio 内置插件添加的节点单独列在 内置插件 下
如何阅读一个节点
每个节点写成这样:
Delay
blueprint.flow.delay· Latent
标题下第一行是节点的 type id——存进文档的值,也是你从插件注册时要用的值。其后是该节点为真的标记:
| 标记 | 含义 |
|---|---|
Pure | 无副作用,没有执行引脚。有东西读取它的输出时才计算,也是能进入 Blueprint Value 的条件之一 |
Latent | 会挂起执行直到完成。Blueprint Value(Call Fn 除外)、内联故事值和分支条件都不提供它 |
打开设置 → 常规 → 开发者选项后,创建浮窗还会在每个节点那一行的右侧显示它的 type id
Pure 本身并不意味着该节点能在 Blueprint Value 里使用。那是另一条更窄的规则:节点必须同时是纯节点、非 latent,且属于允许的分类(Data、List、Math、Time、Text、Slider、Displayable、Element、Game、Localization),外加一小串特例(Init 与 On Flush 事件头、除 Skip Delay 以外非 latent 的 Flow、本地变量读写、Memo、Call Fn、注释、Return Value、Get Saved Var,以及五个 Page 读取节点:Get Page Props、Get Page Param 和三个 Is Surface …)。scope 限定为 widgetMain 的 Self 节点无论标记如何都被排除;在 Blueprint Value 里要触及某个控件,走 Element 字面量加 Element 分类的读取节点
然后是引脚表:
| 引脚 | 方向 | 类型 | 说明 |
|---|---|---|---|
in | in · exec | — | |
duration | in · data | float | 秒。可在节点卡上直接填字面量 |
completed | out · exec | — | 等待结束后触发 |
token | out · data | Timer | 接给 Skip Delay 可提前结束等待 |
执行引脚传递执行,数据引脚传递值。array<struct:nl.ending> 这样的类型是结局的数组,在卡片上显示为结局列表;各种结构见结构。可在节点卡上直接填字面量意味着你可以在卡片上输入该值,而不必拉一条连线。部分节点带动态引脚,由所选变量、所选 fn 的签名或你追加的分支推导出来。这类引脚以文字说明,因为没有固定的表可列
可用性
节点出现在本目录里,不代表它会出现在你的创建浮窗中。有以下几层过滤:
- Blueprint Value。 Blueprint Value 只提供上面那条规则允许的节点
- 内联故事值。 内联故事值和分支条件拒绝 latent 节点
- 宿主与控件能力。 Self 节点只在具备该能力的控件蓝图里出现;Text 控件的蓝图里不会提供
Set Slider Value - 已存在的绑定。 Element 节点只有在图中已有可兼容的
Element、Element Flush或Element Click节点可供连接时才会出现 - 列表项上下文。
Get List Item Index、Get List Item Key、Get List Item Count与Get List Item Props读取元素所渲染的那一项,所以只在可能有某一行处于作用域的地方出现,例如 List 项模板内元素的蓝图。Get Field在所有蓝图中都提供,在这些位置不连接对象时读取当前行 - Story Action 蓝图。 由故事行调用的蓝图不提供任何驱动运行中游戏或其界面的节点:没有 App、Localization、Network、Sound、Voice 节点,Game 分类也几乎全部不提供
存在多个兼容来源时,创建浮窗只列出该节点一次。若来源恰好唯一,添加时会自动连上;若有多个,则保留目标输入由你选择
同类节点
有些节点是同一种操作的不同形式,例如六个比较节点、四个按键事件 Head。创建浮窗把这样的每一组节点作为一组同类节点列出
- 浏览。 搜索节点框为空时,一组同类节点只占一行:上面是组名,下面是分类与节点数,例如数学 · 6 个节点。鼠标悬停在这一行上会列出组内的节点。选择这一行会添加组内的第一个节点,即下表中列在最前面的那个。Element 节点也这样合并,每个已绑定的元素各有一行
- 搜索。 搜索时,组内每个节点各占一行。输入
>或大于都会找到Greater Than;输入组名(例如比较)会列出组内全部节点 - 切换已放置的节点。 节点属于某一组时,卡片标题旁有一个 ▾ 按钮(切换为同类的其他节点)。点击后列出组内当前蓝图能放置的节点,当前节点带勾选标记。选择另一个节点,卡片会在原位置变成该节点
卡片切换为组内另一个节点时:
- 新节点有对应的引脚且该引脚接受这条连线时,连线保持连接。连到
Set BGM Volume的bgmVolume的连线,在卡片变成Set SFX Volume后改连到soundVolume - 新节点无法接受的连线会被移除
- 新节点有相同的设置时,设置保留:
Integer常量上的3在卡片变成Float后仍是3。其他设置会被移除(例如On Key Down变成Any Key Down时原先选定的按键),新节点的设置从默认值开始 - 卡片上填写的值,在对应引脚接受同一类型的值时移到该引脚上,否则被移除
- Ctrl+Z(macOS 上为 Cmd+Z)一步恢复原来的节点及其连线和值
同类节点只影响创建浮窗中节点的列出方式。每个节点仍保留自己的名称和 type id,已有的图不受影响
| 组名 | 节点 | 分类 |
|---|---|---|
| 按键时 | On Key Down、On Key Up、Any Key Down、Any Key Up | Events |
| 手柄按键时 | On Gamepad Button Down、On Gamepad Button Up、Any Gamepad Button Down、Any Gamepad Button Up | Events |
| 字面量 | String、Integer、Float、Boolean、Color、Vector2D、Rect、JSON、Null | Data |
| 转换类型 | To String、To Integer、To Float、To Boolean、To JSON | Data |
| 判断类型 | Is String、Is Number、Is Boolean、Is Array、Is Object、Is Null | Data |
| 去除空白 | Trim、Trim Start、Trim End | Data |
| 转换大小写 | To Lower Case、To Upper Case、Capitalize | Data |
| 替换文本 | Replace、Replace All | Data |
| 填充文本 | Pad Start、Pad End | Data |
| 取整 | Round、Floor、Ceil | Math |
| 随机数 | Random Integer、Random Float | Math |
| 比较 | Equal、Not Equal、Greater Than、Greater Than Or Equal、Less Than、Less Than Or Equal | Math |
| 获取偏好设置 | 17 个节点:「偏好」一节中除Get Track Volume以外的全部Get …节点,第一个是Get Auto Forward | Game |
| 修改偏好设置 | 17 个节点:「偏好」一节中除Set Track Volume以外的全部Set …节点,第一个是Set Auto Forward | Game |
| 获取存档信息 | Get Save Time、Get Save Playtime、Get Save Line、Get Save Story、Get Save Preview、Get Save Metadata | Game |
| 获取文本样式 | Get Font、Get Font Size、Get Font Weight、Get Text Color、Get Line Height、Get Text Align、Get Text Vertical Align、Get Wrap Mode、Get Effects | Text、Element |
| 设置文本样式 | 同样九项属性的Set …节点 | Text、Element |
| 获取图片显示方式 | Get Image Fit Mode、Get Image Flip X、Get Image Flip Y、Get Image Crop Rect | Image、Element |
| 设置图片显示方式 | 同样四项属性的Set …节点 | Image、Element |
| 获取可见性或启用状态 | 一种控件的Get Visible与Get Enabled:Button、Container、Frame、Image、List、Slider、Switch 或 Text。Element 节点为Get Button Visible与Get Button Enabled,其余控件同理 | 控件所在分类、Element |
| 设置可见性或启用状态 | 一种控件的Set Visible与Set Enabled,以及对应的 Element 节点 | 控件所在分类、Element |
文本样式、图片显示方式、可见性或启用状态这几组,控件自身的节点与 Element 节点分属不同的组,可见性或启用状态还按控件类型各自成组。卡片上的 ▾ 只列出卡片所在那一组的节点
分类
节点数是创建浮窗里提供的节点数。同类节点按组内全部节点计数,而创建浮窗分类标签上的数字把一组同类节点算作一行,因此可能更小。已从创建浮窗隐藏、为让旧图继续运行而保留的节点在各自分类页里有说明,不计入节点数
| 分类 | 节点数 | 涵盖 |
|---|---|---|
| Events | 58 | 入口点:生命周期、输入、Surface 转场、Broadcast |
| Flow | 12 | 分支、循环、顺序执行、延迟 |
| Functions | 3 | 声明 fn、调用、返回 |
| Variables | 9 | 声明与读写蓝图变量、持久变量 |
| Data | 96 | 字面量、类型转换、类型判断、JSON、字符串、数组、结构的字段 |
| Math | 25 | 算术、取整、布尔逻辑、比较 |
| Time | 15 | 当前时间、日历,以及日期文本 |
| Game | 97 | 剧情控制、对话、偏好、存档、对话记录 |
| App | 31 | Surface 导航、窗口、应用生命周期 |
| Localization | 6 | 游戏面向玩家的语言,以及项目的翻译键 |
| Network | 3 | HTTP 请求与响应读取 |
| Displayable | 9 | 几何、外观变体、属性动画 |
| Element | 137 | 以上各类的 Element 版本:作用于接入的 Element 而非自身 |
| Image | 16 | 图片资源与填充 |
| Text | 28 | 文本内容与排版 |
| Text Input | 3 | 可编辑文本框 |
| Button | 7 | 按钮标签与指针 |
| Container | 6 | 容器布局与子元素 |
| Frame | 8 | Frame 所展示的 Page 及其 params |
| List | 32 | 运行时项、选中、滚动、项上下文 |
| Slider | 9 | 值、范围与吸附 |
| Debug | 2 | 日志与图内注释 |
| Input | 5 | 玩家在用哪一类设备、某个输入意图是不是被按住的,以及手柄的按键与摇杆 |
| Sound | 9 | 播放界面的音频片段、之后再找到它的句柄,以及页面的音乐 |
| Voice | 5 | 播放录好的语音,以及当前生效的配音语言 |
| Component | 1 | 把组件的这一次摆放与另一次区分开来的那个参数 |
| Switch | 9 | Switch 控件的选中状态,以及它的启用与可见开关 |
| Video | 14 | 视频控件的播放、暂停、停止与跳转,以及音量、静音、循环与速度 |