Skip to main content

来自 SDK2

CyanTrigger 接口基于 SDK2 的 VRC_Trigger 设计,并扩展了其功能。然而,功能的增加也导致了更陡峭的学习曲线。SDK2 中的操作和事件以单一列表呈现,而 CyanTrigger 将其组织成多个子类别,操作和事件分别拥有独立的可搜索列表。虽然 CyanTrigger 包含所有 Udon 功能,但初学者可能会感到无所适从。为了方便从 SDK2 迁移,我们提供了一个包含大多数 SDK2 操作的映射列表。

主要差异:

1. 触发器禁用:

在 SDK2 中,禁用 VRC_Trigger 会忽略所有操作。CyanTrigger 的机制有所不同,它无法直接禁用。禁用 CyanTrigger 需要改用 UdonBehaviour。若需在 CyanTrigger 或其所属对象禁用时忽略事件,需在事件开头添加 “ReturnIfDisabled” 操作。详见相关指南。

2. 操作缓冲:

SDK2 的 VRC_Trigger 提供缓冲 (Buffering) 系统,用于为迟来的玩家重放操作,实现 VRChat 实例间的同步。CyanTrigger 目前不支持此功能。建议使用变量处理后期连接玩家的情况。详见变量相关说明。

3. 对象生成:

虽然 Udon 支持对象生成,但生成的物体不会联网。SDK2 简化了对象生成,但在 Udon 中,VRChat 推荐使用对象池。VRC_ObjectPool 组件作为对象的生成替代方案。需要注意的是,CyanTrigger 存在一个已知问题:从包含 CyanTrigger 的资源文件夹生成预制体后,预制体将无法正常工作。

4. 发送 RPC:

SDK2 中,VRC_Trigger 使用 SendRPC 操作调用其他 VRChat 组件的方法。CyanTrigger 和 Udon 可直接调用这些方法,无需特殊操作。例如,SendRPC “UseStation” 将替换为 VRCStation.UseStation

5. 组件启用/禁用 (SetComponentActive):

SDK2 的 SetComponentActive 操作查找指定类型的组件并启用或禁用它们。CyanTrigger 使用 set Enabled 操作来控制组件的启用/禁用状态。例如,禁用 BoxCollider 的操作应为 BoxCollider.set Enabled

6. 切换操作:

SDK2 中,使用布尔值的每个操作都支持值切换。CyanTrigger 不具备此功能。我们提供了一些自定义操作,例如 GameObject.ToggleActive,但并非所有操作都支持切换。完整的切换操作需要四个操作步骤。详见镜像切换指南。此方法同样适用于组件的切换,通过 get Enabled 和 set Enabled 操作实现。

CyanTrigger 缺失的功能:

  • OnTimers:目前未实现,但计划添加。目前可使用 CyanTrigger 接口中的延迟功能或 UdonBehaviour.SendCustomEventDelayed
  • OnKeyDown/Up:缺乏直接的键盘按键事件。VRChat 提供了诸如跳跃和抓取等常用操作的输入事件。对于特定键盘输入,需要在 Update 事件中使用 Input.GetKeyDown 进行检测。详见相关指南。
  • 随机操作: 简易的随机列表选择功能正在开发中。目前可以使用 Udon 节点实现,但操作较为复杂。详见相关指南。

这份文档对 CyanTrigger 与 SDK2 VRC_Trigger 的差异进行了详细的比较,并提供了迁移过程中可能遇到的问题的解决方案和建议。 希望这份文档能够帮助开发者顺利完成从 SDK2 到 CyanTrigger 的迁移。