Skip to main content

Write Or Create Dynamic Variable(写入或创建动态变量)

Write Or Create Dynamic Variable(写入或创建动态变量)

Write Or Create Dynamic Variable 是一个 ProtoFlux 节点,用于在指定 Slot(插槽)下创建新变量或查找已创建的动态变量。有关动态变量的更多信息,请参阅 Dynamic Variables。如图所示。

20260205211833_1.jpg

只有当变量在附着到目标 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.Date
PostViewer/Post.Poster
PostViewer/Post.Text
PostViewer/Comments.898dw3juez.poster
PostViewer/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 处成功绑定(创建失败)时触发。此时变量不会被创建。