来自 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 的迁移。
No Comments