Skip to main content

输入事件

您可以使用 Udon 输入事件,以统一方式读取玩家控制器的输入。即使玩家重新映射了控制器,这些事件也能正常工作。

目前有两种类型的事件——按钮和轴,包含布尔值和浮点值。每个事件还包含一个特殊的 UdonInputEventArgs 对象。您也可以使用 Unity 输入方法和属性直接读取输入数据。

按钮事件​

按钮事件包含一个bool值,按钮按下时为true,释放时为false。

InputJump​

桌面端的空格键,通常为控制器上的面部按钮。

InputUse​

桌面端的鼠标左键,通常为控制器上的扳机键。

InputGrab​

桌面端的鼠标左键,通常为 VR 控制器上的握持键。

InputDrop​

桌面端的鼠标右键,在 Vive Wand 和一些 Windows Mixed Reality 控制器上按下握持键,在其他控制器上释放握持键。

轴事件​

轴事件有一个float值,通常在 -1 到 1 之间。使用带有模拟摇杆的控制器时,每次值变化都会触发新事件,从 0 到 0.1,再到 0.2 等。桌面用户将输出整数:-1、0、1 等。

InputMoveHorizontal​

桌面端的 A 和 D 键,通常为控制器上的左摇杆/触控板左右移动。

InputMoveVertical​

桌面端的 W 和 S 键,通常为控制器上的左摇杆/触控板上下移动。

InputLookVertical​

桌面端的鼠标上下移动,通常为游戏手柄和 VR 控制器上的右摇杆上下移动。

InputLookHorizontal​

桌面端的鼠标左右移动,在 VR 控制器上使用右摇杆/触控板左右转动(不启用舒适转向),通常为游戏手柄控制器上的右摇杆左右移动。

UdonInputEventArgs​

此对象包含在每个输入事件中,包含可能有用的附加事件数据。我们将来可能会在此对象中添加更多数据。目前包含:

  • UdonInputEventType: BUTTON 或 AXIS
  • boolValue: 如果是按钮事件则为 True/False,如果是轴事件则为 false(默认值)
  • floatValue: 轴事件为 -1 到 1 之间的数字,按钮事件为 0(默认值)
  • handType: LEFT 或 RIGHT。也包含键盘和鼠标用户(鼠标为 RIGHT,键盘为 LEFT)。

OnInputMethodChanged​

每当用户切换输入方法时触发此事件,如从键盘切换到鼠标、控制器或触摸屏。它包含一个 VRCInputMethod 枚举作为参数。

模糊的 Vive 输入名称
  • VRCInputMethod.Vive 是通过 SteamVR 运行的 Vive 控制器。
  • VRCInputMethod.ViveXr 是通过 OpenXR 运行的 Vive XR Elite 控制器。

Unity 输入方法和属性​

Udon 可以访问 UnityEngine.Input 命名空间中的一些方法和属性。它们提供关于用户输入的详细信息。

以下方法和属性在 Udon 中可用:

VRChat 菜单中的输入检测​

在以下 VRChat 菜单打开时,Udon 无法检测输入:

  • 主菜单
  • 快捷菜单(仅限桌面或移动端)
  • 文本输入弹窗

当您打开 VRChat 菜单时,Udon 会释放所有按住的输入,即使您继续按住它们。例如:

  • 如果您按住方向键并打开 VRChat 菜单,Input.GetButtonUp() 对该键返回 true。
  • 如果您按住跳跃按钮并打开 VRChat 菜单,Udon 执行 InputJump(false)。

当您关闭 VRChat 菜单时,Udon 按下所有按住的 Unity 输入。例如:

  • 如果您在关闭 VRChat 菜单时按住右箭头键,Input.GetButtonDown() 对该键返回 true。
  • 如果您按住跳跃按钮并关闭 VRChat 菜单,Udon 不会 执行 InputJump(true)。