Skip to main content

新页面

Dynamic Reference Variable Driver (泛型)

DynamicReferenceVariableDriver 组件可以将一个 SyncRef(引用容器)驱动为名为 VariableName 的动态变量的值。如图所示。

image.png

如果无法找到指定的变量,该值将回退为 DefaultTarget(默认目标)。关于其工作原理的详细说明,请参阅 Dynamic Variables(动态变量)页面。

属性 (Fields)

属性名称 类型 描述
VariableName
(变量名)
String 动态变量的名称。
Target
(驱动目标)
RefDrive<T> 被该变量定义所驱动的字段引用。
(注:即你希望控制哪个属性的引用,例如某个 Slot 的 Parent)
DefaultTarget
(默认目标/回退值)
T 当动态变量不存在时,使用的默认引用值。

用法

暂无内容。

示例

可以通过将此组件的泛型类型设置为 Slot,来巧妙利用动态变量的读取机制实现特殊功能。由于此组件是从其所在的 Slot 位置开始读取变量的,因此它可以用来驱动另一个 Slot 的 Parent(父级)字段。将两者结合使用可以产生有趣的行为。

例如:

  1. 设置 Avatar(用户): 假设一个 Avatar 的头部有一个 Slot,上面挂着 DynamicReferenceVariable<Slot>,其 VariableName 设置为 "User/Hat"(指向头部 Slot)。
  2. 设置物品(帽子架): 有一个物品(比如帽子架),其 Slot 上挂着 DynamicReferenceVariableDriver<Slot>VariableName 也设置为 "User/Hat"。将 DefaultTarget 设置为帽子架自己的 Slot。
  3. 设置移动物体(帽子): 帽子架下有一个子物体(帽子)。将帽子的 Parent(父级)字段拖入帽子架上的 Driver 组件的 Target 中。
  4. 运行逻辑:
    • 当帽子架放置在世界中时,它找不到 "User/Hat" 变量。因此,驱动器将帽子的父级设置为 DefaultTarget(即帽子架),帽子乖乖地待在架子上。
    • 一旦用户拿起帽子架(帽子架进入用户的层级结构),驱动器就能在父级链中找到名为 "User/Hat" 的变量(位于用户头部)。
    • 此时,帽子会立即从架子上移动(重设父级)到用户头部的 Slot。
    • 请注意,在这个场景中,负责“读取”变量位置的是架子,而不是帽子。
    • 当用户丢下架子(解除父子关系),架子无法再找到变量,驱动器回退到 DefaultTarget,帽子会立即飞回架子上。

这也允许被移动的 Slot(也就是帽子)去采样其他的数值,从而实现更复杂的读取和交互(例如:帽子移动到用户头上时,颜色变为该用户设置的代表色)。