新页面
CyanTrigger 组件
CyanTrigger 组件由 CyanTrigger 组件和 UdonBehaviour 组件构成。由于这是 SDK3,UdonBehaviour 对于所有游戏内容都是必需的。CyanTrigger 组件实际上是一个用于创建 Udon 程序的友好用户界面。向游戏对象添加 CyanTrigger 组件时,系统会同时添加 UdonBehaviour 组件并将其与 CyanTrigger 组件关联。所有操作都将在 CyanTrigger 组件中进行,无需在 UdonBehaviour 组件中进行任何操作。
其他设置 (Other Settings)
“其他设置”部分是一个上下文相关的部分,仅在需要时根据对象上的组件或 CyanTrigger 中使用的事件显示。目前包含两个选项:更新顺序 (Update Order) 和交互 (Interact)。
-
更新顺序 (Update Order): 仅当 CyanTrigger 具有更新事件(Update、LateUpdate、PostLateUpdate 和 FixedUpdate)时显示。此选项允许您调整此 CyanTrigger 相对于其他 CyanTrigger 执行更新的顺序。数值越小,执行顺序越靠前。
-
交互 (Interact): 仅当 CyanTrigger 具有交互事件时显示。此选项允许您自定义与对象交互时显示的文本,以及触发交互所需的玩家距离。
错误和警告
-
错误 (Error): 某些操作设置不当可能导致编译错误。这些错误将显示在控制台和 CyanTrigger 组件本身(以红色文本显示)。出现红色文本表示 CyanTrigger 无法编译,必须修复错误后才能重新编译。
-
警告 (Warning): CyanTrigger 也可能出现警告,以橙色文本显示在组件顶部。警告不会阻止编译,但提示潜在问题。
注释 (Comments)
您可以在 CyanTrigger 的多个区域添加注释。目前,您可以通过右键单击 CyanTrigger 组件顶部附近并选择“编辑 CyanTrigger 注释”选项来添加顶层注释。输入注释后,按 Shift + Enter 或单击确认按钮完成编辑。事件和操作也支持添加注释。
变量 (Variables)
变量部分是 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 网络的信息,请参考“网络”页面。
如果游戏对象使用 VRC_ObjectSync 组件,则所有 CyanTrigger 和 UdonBehaviour 组件必须设置为连续同步。如果同步模式设置为手动同步,而对象又具有 VRC_ObjectSync 组件,CyanTrigger 将显示错误。解决方法是将 VRC_ObjectSync 组件移动到另一个对象,或将 CyanTrigger 设置为连续同步。如果需要手动同步,则需要将同步项目移动到没有 VRC_ObjectSync 组件的对象上。
事件 (Events)
在 CyanTriggers 中,事件是逻辑的起点,定义何时执行操作、执行哪些操作以及由谁执行。
事件标头 (Event Header)
事件标头包含多个设置和按钮,前两个是定义事件的主要步骤:
-
事件类型 (Base Event Type): VRChat 和 Unity 在发生特定事件时调用的事件类型。请参考 Unity MonoBehaviour 文档和 VRChat 文档了解每个事件类型的触发条件。
-
事件变体 (Event Variant): 仅在为特定事件定义了自定义操作时可用。默认值为“VRC_Direct”,表示不会进行额外的逻辑检查。大多数自定义操作用于提供逻辑控制。例如,如果事件类型为
OnPlayerTriggerEnter
,事件变体为LocalPlayer
,则只会在本地玩家进入触发器时触发事件,忽略远程玩家。更多信息请参考“自定义操作”部分。
事件关卡 (Event Gate) - 谁可以激活
CyanTriggers 提供多个选项控制谁可以激活事件:
- 任何人 (Anyone): 实例中的任何玩家。
- 所有者 (Owner): 仅限对象的所有者。Owner 是指对象所有权。查看 Networking 页面以了解更多信息。
- 管理员 (Master): 仅限实例中的管理员(游戏时间最长的玩家)。master 始终是在 instance 中时间最长的玩家。
- 允许列表 (Allow List): 名称包含在用户列表中的玩家。选择此选项将添加 用户列表 ,您可以在其中输入不同用户的名称。
- 拒绝列表 (Deny List): 名称不在用户列表中的玩家。选择此选项将添加 用户列表 ,您可以在其中输入不同用户的名称。
- 实例所有者 (Instance Owner): 仅限创建实例的玩家(公共实例没有实例所有者)。实例所有者是通过删除门户创建实例的用户。请注意,对于公有实例,没有实例所有者。
允许列表示例: 允许“CyanLaser”、“LocalPlayer1”以及与变量 SomeUserName
值相同的玩家。
活动广播 (Event Broadcast) - 谁将执行
有三种选项控制谁将执行事件:
- 本地 (Local): 仅激活事件的本地玩家执行。
- 发送给所有者 (Send to Owner): 仅发送给对象的所有者,所有者不必是激活事件的玩家。
- 发送给所有人 (Send to All): 实例中的所有玩家都执行。目前不支持 SDK2 的缓冲系统,需要使用变量来同步内容给延迟加入的玩家。
事件注释 (Event Comment)
与 CyanTrigger 顶层注释类似,事件也支持添加注释。您可以点击两个斜杠按钮或使用右键单击菜单中的“编辑注释”选项来编辑事件注释。
事件选项 (Event Options)
更多事件选项隐藏在额外的菜单中,可以通过点击“More Options”按钮或右键单击事件来访问。
事件输入 (Event Inputs)
每个事件默认包含一个延迟输入,与 SDK2 中的延迟相同。通过自定义事件,用户可以添加额外的输入选项。某些事件还会提供可在操作中使用的变量。
CustomEventEditor 示例: 一个自定义的 OnTriggerEnter
变体事件,定义一个输入(游戏对象列表),并提供一个可在操作中使用的变量 onTriggerEnterOther
(类型为 Collider)。
操作 (Actions)
添加操作 (Adding Actions)
操作列表底部有六个按钮用于添加或删除操作:
- “SDK2”: 从类似 SDK2 提供的选项列表中添加新操作。
- 星标: 从收藏的操作列表中添加新操作。此列表可由用户自定义。
- 加号: 从 Udon 提供的所有可能操作和用户创建的自定义操作列表中添加新操作。
- 形状: 添加新的局部变量操作。
- 双页: 复制选定的操作。
- 减号: 删除选定的操作。
操作编辑器 (Action Editor)
编辑操作时,输入选项将与操作一起显示。操作列表右侧的框将展开或收缩该操作的操作编辑器。
在该示例中,您可以看到一个操作展开以显示选项和输入。变量选择器是第一个选项,然后列出操作的输入。某些操作具有多个变体。变体具有相同的操作名称,但具有不同的参数。
操作输入 (Action Inputs)
CyanTriggers 的操作输入可以是常量值或变量。常量值不变,而变量输入取决于变量中的数据,可能因事件执行而异。“out”类型的输入必须使用变量,因为数据将从操作结果存储到该变量中。
操作注释 (Action Comments)
每个操作都可以添加注释,方法是右键单击操作并选择“添加注释”选项。
空输入 (Null Inputs)
如果操作输入没有值或设置为变量但未选择变量,操作周围将显示橙色警告框。
操作列表 (Action List)
支持多选操作,可以复制、删除或移动选定的操作。
支持拖动操作进行重新排序,甚至可以跨不同的事件、同一 CyanTrigger 或其他对象的 CyanTrigger 进行拖动。
某些特殊操作允许嵌套其他操作。支持嵌套的操作在操作标签前显示一个箭头。更多信息请参考“特殊操作”部分。