带有WMR HMD事件的MRTKv2 PressableRoundButton预制件似乎不适用于我

时间:2019-09-05 22:53:37

标签: c# mrtk

我已经创建了一个小测试场景,我想在该场景中使用PressableRoundButton预制件在按下时添加场景。我已经将按钮连接起来,以调用脚本并传递要加载的场景的名称,该代码已通过验证,可与调试键盘快捷键一起使用,因此我知道该部分是不错的。似乎不起作用的是按钮事件本身。也许我已经走了,做了一些非常愚蠢的事情,但是我愚蠢的无法弄清楚自己做错了什么。

我正在使用NullInjectorError: No provider for InjectionToken angularfire2.app.options! ,这可能是问题也可能不是问题,但是我不确定如何诊断。我觉得默认的是最安全的选择。当我使用WMR控制器单击按钮时,可以看到按钮的外观在视觉上按下,因此按钮背后的所有机制都可以通过按下按钮来实现,而当我按下触发器并指向它时,一切都可以实现

Button Events list

1 个答案:

答案 0 :(得分:0)

感谢您分享您的设置图片!尝试在PressableButton组件的Interactable处理程序中而不是在OnClick组件中调用代码(您需要在Interactable中扩展“事件”下拉列表。

PressableButton组件实际上仅会在您以近距离交互方式直接按下按钮时引发按下按钮等事件。要远距离按下按钮,请使用Interactable中的OnClick事件处理程序。

Have a look at the picture here to see where the OnClick handler lives

请注意,OnClick只会在未按下指针时触发,并且(如果当前)按下时间过长,也不会(当前)触发。如果您想在按下时运行代码,则可以处理OnPress事件。

Have a look here for that example

请注意,默认情况下,Interactables仅处理OnClick事件-通过单击“添加事件”按钮来添加“事件接收器”,从而添加更多事件处理程序。然后,您可以选择接收器类型。对于圆形按钮预制件,已经为您设置了InteractableOnPressReceiver,用于公开OnPress和OnRelease事件。

在MRTK中思考按钮的方式是:

  • Interactable实际上是一个“按钮”,可以与附近和远处进行交互。它公开了许多不同的事件处理程序,并具有许多可视选项。之所以称其为“可交互”而不是“按钮”,主要是出于历史原因(正是这种方式,人们开始使用它,现在更改它会破坏很多人。)
  • PressableButton是一个更复杂的仅触摸式按钮,实际上可以用手指移动。实际上,Pressable按钮与Interactable对话,设置诸如其按下状态之类的信息,这样,只要他们想在近处和远处工作,人们都可以只听Interactable。

在大多数情况下,将事件处理程序添加到Interactable(不可按下)按钮。可按下的按钮仅用于触摸。