Write Or Create Dynamic Variable(写入或创建动态变量)
Write Or Create Dynamic Variable(写入或创建动态变量)
Write Or Create Dynamic Variable 是一个 ProtoFlux 节点,用于在指定 Slot(插槽)下创建新变量或查找已创建的动态变量。有关动态变量的更多信息,请参阅 Dynamic Variables。如图所示。
只有当变量在附着到目标 Slot 上能够成功绑定(Bind)时,该节点才会创建变量。否则,动态变量将不会被创建,并且会触发 OnFailed 脉冲。
示例场景
假设你正在从 API(例如博客文章)读取一长串数据,返回的数据结构如下:
{
"date":"4/5/2020",
"poster":"josh",
"text":"I caught a fish",
"comments":{
"898dw3juez":{
"poster":"Jared",
"text":"This is cool!"
}
}
}
假设你已经使用 ProtoFlux 可靠地读取了这些数据,该如何将其存储为可读取的数据呢?
利用“写入或创建动态变量”,你可以通过建立一个名为 PostViewer 的动态变量空间(Dynamic Variable Space),然后写入一系列变量来创建列表。上述数据可以被写入为以下变量路径:
PostViewer/Post.DatePostViewer/Post.PosterPostViewer/Post.TextPostViewer/Comments.898dw3juez.posterPostViewer/Comments.898dw3juez.text
之后,可以使用 Read Dynamic Variable 读取这些信息。请注意,这里使用点号(.)允许变量遵循命名规则,同时也作为变量空间下不同数据的分隔符。读取此类数据时,可以通过将字符串用点号连接起来(就像处理路径和斜杠一样)来构建路径。
节点接口概览
| 输入 (Inputs) | |
|---|---|
| * (Call/调用) | Impulse (脉冲) |
| Target (目标) | Slot |
| Path (路径) | String |
| CreateDirectlyOnTarget (直接在目标上创建) |
bool |
| CreateNonPersistent (创建非持久化变量) |
bool |
| Value (值) | Generic (通用/自适应) |
| 输出 (Outputs) | |
| OnFound (已找到) | Continuation (脉冲) |
| OnCreated (已创建) | Continuation (脉冲) |
| OnFailed (失败) | Continuation (脉冲) |
输入
Target (Slot)
用于搜索动态变量空间的 Slot,变量将尝试放入该空间范围内。
Path (String)
要创建的动态变量的路径/名称。关于此参数如何影响附着逻辑,请参阅页面开头的说明。
CreateDirectlyOnTarget (bool)
决定新变量创建的位置:
- False:附着到承载“动态变量空间组件”(Dynamic Variable Space Component)的那个 Slot 上(通常是父级或根级)。
- True:直接附着到
Target输入指定的 Slot 上。
CreateNonPersistent (Bool)
如果为 True,创建的动态值变量将是非持久化的(即不会随世界或物品保存)。
Value (Generic)
变量应当存储的任何类型的值、引用或对象。
参考: Issue #1254
输出
OnFound (Continuation)
当输入脉冲触发,且在 Target 范围内找到了已存在的同名可读变量时触发。
OnCreated (Continuation)
当输入脉冲触发,且变量之前不存在(因此被新创建)时触发。注意:只有当变量能够成功绑定时,才会执行创建操作(详见 Dynamic Variables 页面)。
OnFailed (Continuation)
当输入脉冲触发,但变量无法在 Target 处成功绑定(创建失败)时触发。此时变量不会被创建。

No comments to display
No comments to display