Skip to main content

CyanTrigger 操作界面

CyanTrigger 组件

image.png

CyanTrigger 组件由 CyanTrigger 组件和 UdonBehaviour 组件构成。由于这是 SDK3,UdonBehaviour 对于所有游戏内容都是必需的。CyanTrigger 组件实际上是一个用于创建 Udon 程序的友好用户界面。向游戏对象添加 CyanTrigger 组件时,系统会同时添加 UdonBehaviour 组件并将其与 CyanTrigger 组件关联。所有操作都将在 CyanTrigger 组件中进行,无需在 UdonBehaviour 组件中进行任何操作。

其他设置 (Other Settings)

image.png

“其他设置”部分是一个上下文相关的部分,仅在需要时根据对象上的组件或 CyanTrigger 中使用的事件显示。目前包含两个选项:更新顺序 (Update Order) 和交互 (Interact)。

  • 更新顺序 (Update Order): 仅当 CyanTrigger 具有更新事件(Update、LateUpdate、PostLateUpdate 和 FixedUpdate)时显示。此选项允许您调整此 CyanTrigger 相对于其他 CyanTrigger 执行更新的顺序。数值越小,执行顺序越靠前。

  • 交互 (Interact): 仅当 CyanTrigger 具有交互事件时显示。此选项允许您自定义与对象交互时显示的文本,以及触发交互所需的玩家距离。

错误和警告

image.png

  • 错误 (Error): 某些操作设置不当可能导致编译错误。这些错误将显示在控制台和 CyanTrigger 组件本身(以红色文本显示)。出现红色文本表示 CyanTrigger 无法编译,必须修复错误后才能重新编译。

image.png

  • 警告 (Warning): CyanTrigger 也可能出现警告,以橙色文本显示在组件顶部。警告不会阻止编译,但提示潜在问题。

注释 (Comments)

image.png

您可以在 CyanTrigger 的多个区域添加注释。目前,您可以通过右键单击 CyanTrigger 组件顶部附近并选择“编辑 CyanTrigger 注释”选项来添加顶层注释。输入注释后,按 Shift + Enter 或单击确认按钮完成编辑。事件和操作也支持添加注释。

变量 (Variables)

image.png

变量部分是 SDK2 的 VRC_Triggers 中没有的功能,完全可选,但有助于创建更复杂的系统。变量用于在事件和操作中存储和访问数据。变量还可以同步,确保所有玩家(包括延迟加入者)拥有相同的数据。 不熟悉变量使用的用户,请参考“变量”页面了解更多信息。

CyanTriggers 支持多个全局变量,可在动作编辑器中访问。每个变量包含四个部分:

  • 名称 (Name): 变量名称,也是在操作编辑器中使用的引用名称。
  • 类型 (Type): 变量的数据类型。
  • 值 (Value): 变量的默认值。
  • 同步 (Sync): 变量的同步方式:未同步 (Not Synced)、同步 (Synced)、线性同步 (Synced Linear) 和平滑同步 (Synced Smooth)。

变量列表底部提供四个按钮:

  • 星号:从收藏的变量选项列表中添加新变量。此列表可由用户自定义。
  • 加号:从所有可能的变量选项列表中添加新变量。
  • 双页:复制选定的变量。
  • 减号:删除选定的变量。
同步方法 (Sync Method)

变量列表底部是 CyanTrigger 和 UdonBehaviour 的同步方法设置。此部分仅当需要同步变量或在游戏对象上使用 VRC_ObjectSync 组件时才有意义。VRChat 提供两种同步变量的方法:

  • 连续同步 (Continuous Sync): 适用于数据频繁变化的变量(例如,对象的位置)。VRChat 会自动获取并定期发送数据,但可能较慢且占用更多网络带宽。即使值未更改,数据也会被发送。

  • 手动同步 (Manual Sync): 适用于数据不频繁变化的变量。更改同步变量的值后,需要手动调用 UdonBehaviour.RequestSerialization 来请求 VRChat 同步数据。手动同步速度更快,是推荐的方法。“手动同步带自动请求 (Manual With Auto Request)”选项会在每次更改同步变量的值时自动调用请求序列化。

更多关于同步变量和 VRChat 网络的信息,请参考“网络”页面。

image.png

如果游戏对象使用 VRC_ObjectSync 组件,则所有 CyanTrigger 和 UdonBehaviour 组件必须设置为连续同步。如果同步模式设置为手动同步,而对象又具有 VRC_ObjectSync 组件,CyanTrigger 将显示错误。解决方法是将 VRC_ObjectSync 组件移动到另一个对象,或将 CyanTrigger 设置为连续同步。如果需要手动同步,则需要将同步项目移动到没有 VRC_ObjectSync 组件的对象上。

事件 (Events)

image.png

在 CyanTriggers 中,事件是逻辑的起点,定义何时执行操作、执行哪些操作以及由谁执行。

事件标头 (Event Header)

image.png

事件标头包含多个设置和按钮,前两个是定义事件的主要步骤:

  • 事件类型 (Base Event Type): VRChat 和 Unity 在发生特定事件时调用的事件类型。请参考 Unity MonoBehaviour 文档VRChat 文档了解每个事件类型的触发条件。

  • 事件变体 (Event Variant): 仅在为特定事件定义了自定义操作时可用。默认值为“VRC_Direct”,表示不会进行额外的逻辑检查。大多数自定义操作用于提供逻辑控制。例如,如果事件类型为 OnPlayerTriggerEnter,事件变体为 LocalPlayer,则只会在本地玩家进入触发器时触发事件,忽略远程玩家。更多信息请参考“自定义操作”部分。

事件关卡 (Event Gate) - 谁可以激活

image.png

CyanTriggers 提供多个选项控制谁可以激活事件:

  • 任何人 (Anyone): 实例中的任何玩家。
  • 所有者 (Owner): 仅限对象的所有者。Owner 是指对象所有权。查看 Networking 页面以了解更多信息。
  • 管理员 (Master): 仅限实例中的管理员(游戏时间最长的玩家)。master 始终是在 instance 中时间最长的玩家。
  • 允许列表 (Allow List): 名称包含在用户列表中的玩家。选择此选项将添加 用户列表 ,您可以在其中输入不同用户的名称。
  • 拒绝列表 (Deny List): 名称不在用户列表中的玩家。选择此选项将添加 用户列表 ,您可以在其中输入不同用户的名称。
  • 实例所有者 (Instance Owner): 仅限创建实例的玩家(公共实例没有实例所有者)。实例所有者是通过删除门户创建实例的用户。请注意,对于公有实例,没有实例所有者。

image.png

允许列表示例: 允许“CyanLaser”、“LocalPlayer1”以及与变量 SomeUserName 值相同的玩家。

活动广播 (Event Broadcast) - 谁将执行

image.png

有三种选项控制谁将执行事件:

  • 本地 (Local): 仅激活事件的本地玩家执行。
  • 发送给所有者 (Send to Owner): 仅发送给对象的所有者,所有者不必是激活事件的玩家。
  • 发送给所有人 (Send to All): 实例中的所有玩家都执行。目前不支持 SDK2 的缓冲系统,需要使用变量来同步内容给延迟加入的玩家。
事件注释 (Event Comment)

image.png

与 CyanTrigger 顶层注释类似,事件也支持添加注释。您可以点击两个斜杠按钮或使用右键单击菜单中的“编辑注释”选项来编辑事件注释。

事件选项 (Event Options)

image.png

更多事件选项隐藏在额外的菜单中,可以通过点击“More Options”按钮或右键单击事件来访问。

事件输入 (Event Inputs)

每个事件默认包含一个延迟输入,与 SDK2 中的延迟相同。通过自定义事件,用户可以添加额外的输入选项。某些事件还会提供可在操作中使用的变量。

image.png

CustomEventEditor 示例: 一个自定义的 OnTriggerEnter 变体事件,定义一个输入(游戏对象列表),并提供一个可在操作中使用的变量 onTriggerEnterOther(类型为 Collider)。

操作 (Actions)

添加操作 (Adding Actions)

image.png

操作列表底部有六个按钮用于添加或删除操作:

  • “SDK2”: 从类似 SDK2 提供的选项列表中添加新操作。
  • 星标: 从收藏的操作列表中添加新操作。此列表可由用户自定义。
  • 加号: 从 Udon 提供的所有可能操作和用户创建的自定义操作列表中添加新操作。
  • 形状: 添加新的局部变量操作。
  • 双页: 复制选定的操作。
  • 减号: 删除选定的操作。
操作编辑器 (Action Editor)

image.png

编辑操作时,输入选项将与操作一起显示。操作列表右侧的框将展开或收缩该操作的操作编辑器。

在该示例中,您可以看到一个操作展开以显示选项和输入。变量选择器是第一个选项,然后列出操作的输入。某些操作具有多个变体。变体具有相同的操作名称,但具有不同的参数。

操作输入 (Action Inputs)

image.png

CyanTriggers 的操作输入可以是常量值或变量。常量值不变,而变量输入取决于变量中的数据,可能因事件执行而异。“out”类型的输入必须使用变量,因为数据将从操作结果存储到该变量中。

操作注释 (Action Comments)

image.png

每个操作都可以添加注释,方法是右键单击操作并选择“添加注释”选项。

空输入 (Null Inputs)

image.png

如果操作输入没有值或设置为变量但未选择变量,操作周围将显示橙色警告框。

操作列表 (Action List)

支持多选操作,可以复制、删除或移动选定的操作。

image.png

支持拖动操作进行重新排序,甚至可以跨不同的事件、同一 CyanTrigger 或其他对象的 CyanTrigger 进行拖动。

image.png

某些特殊操作允许嵌套其他操作。支持嵌套的操作在操作标签前显示一个箭头。更多信息请参考“特殊操作”部分。

image.png