c# - 带有 WMR HMD 事件的 MRTKv2 PressableRoundButton 预制件似乎对我不起作用
问题描述
我创建了一个小测试场景,我想使用 PressableRoundButton 预制件在按下时添加加载场景。我已经连接了按钮以调用脚本并传递我要加载的场景的名称,此代码已验证可与调试键盘快捷键一起使用,因此我知道该部分很好。似乎不起作用的是按钮事件本身。也许我已经做了一些非常愚蠢的事情,但我愚蠢地无法弄清楚我做错了什么。
我正在使用DefaultMixedRealityToolkitConfigurationProfile
which 可能是也可能不是问题,但我有点不确定如何诊断。我有点认为默认的将是最安全的选择。当我使用 WMR 控制器单击按钮时,我可以看到按钮在视觉上被按下,因此按钮背后的所有机制都在将其按下以及当我在指向它的同时按下触发器时所有这些机制都在工作
解决方案
感谢您分享您的设置图片!尝试不在组件中调用您的代码PressableButton
,而是在Interactable
组件的OnClick
处理程序中调用(您需要在 Interactable.
PressableButton 组件实际上只会在您直接戳具有接近交互的按钮时引发按下按钮等事件。要在远处按下按钮,请使用 Interactable 中的 OnClick 事件处理程序。
请注意,OnClick 只会在指针未按下时触发,并且(当前)如果您按下时间过长也不会触发。如果您想在按下时运行代码,则可以改为处理 OnPress 事件。
请注意,默认情况下,Interactables 仅处理 OnClick 事件——您可以通过单击“添加事件”按钮添加“事件接收器”来添加更多事件处理程序。然后,您可以选择接收器类型。对于圆形按钮预制件,已经InteractableOnPressReceiver
为您设置了一个公开 OnPress 和 OnRelease 事件的设置。
在 MRTK 中考虑按钮的方式是:
- Interactable 实际上是一个“按钮”,可以在附近和远处进行交互。它公开了许多不同的事件处理程序,并具有许多视觉选项。它之所以被称为“可交互”而不是“按钮”,主要是出于历史原因(就是这样,人们开始使用它,现在改变它会破坏很多人)。
- PressableButton 是一个更复杂的纯触摸按钮,它实际上是用手指移动的。Pressable 按钮实际上与 Interactable 对话,设置诸如按下状态之类的东西,这样如果人们想在近处和远处工作,他们就可以只听 Interactable。
在大多数情况下,将您的事件处理程序添加到可交互的,不可按下的按钮。可按下按钮仅用于触摸。
推荐阅读
- javascript - 返回带有值的 Map 但得到空值
- couchbase - 如何在沙发库文档错误中使用 LookupIn 时修复错误:“无法执行一个或多个多重查找或突变”
- java - 如何使用 Jersey 在 JAX-RS 中使用 Swagger 2.X 生成两个 OpenAPI 文档(json/yaml)?
- node.js - 带有返回数组的响应的 rxjs 合并映射
- c# - .NET 多目标框架将 System.* DLL 复制到 .NET Framework 输出目录
- javascript - 如何在json字符串的每一行旁边附加注释?
- nestjs - 如何在 AWS Lambda 中跟踪 npm 模块?
- python - 有没有办法使用 django forms.py 生成随机整数?
- react-native - 如何世博录音扩展.mp3
- sql - 使用 SQL 获取一年前的数据