原生HTC Vive输入在Unity OpenXR环境下无响应问题咨询
问题1:Vive主按键无法识别的原因
- 设备仅在Start中单次获取,容易失效:Vive手柄如果出现启动时未完成配对、运行中重连的情况,你提前缓存的
device变量就会指向无效设备,后续调用TryGetFeatureValue自然拿不到正确的按键状态。你可以在Update中先判断device.isValid是否为true,无效就重新调用InputDevices.GetDevicesAtXRNode更新device变量即可。 - 未添加Vive控制器的OpenXR交互配置:如果你的项目OpenXR设置里只加了Oculus Touch的配置文件,Unity不会自动映射Vive手柄的按键,只要在「Project Settings > XR Plug-in Management > OpenXR > Interaction Profiles」中添加HTC Vive控制器的配置文件就能解决。
- 特殊版本的按键映射适配:部分版本的OpenXR插件会把Vive手柄触控板的按压事件映射到
CommonUsages.primary2DAxisClick而非primaryButton,你可以额外增加一行读取该属性的逻辑做兼容。
问题2:Vive菜单键的检测方法
Unity XR的通用属性定义中已经包含了菜单键的配置,不需要额外自定义,直接用下面的代码即可读取:
bool isMenuPressed; device.TryGetFeatureValue(CommonUsages.menuButton, out isMenuPressed);
如果以上代码读取失败,你也可以通过Unity Input System的动作映射配置实现:新增一个菜单按键的Action,绑定路径选择对应Vive手柄的菜单点击路径即可,同时也可以给Oculus设备的菜单键加同样的Action绑定,实现跨设备兼容。
内容的提问来源于stack exchange,提问作者Drew Parmelee
相关产品推荐
相关产品推荐

