Unity3d 为什么我的Unity/MRTK应用程序中的HoloLens1无法使用“空气敲击”手势?

Unity3d 为什么我的Unity/MRTK应用程序中的HoloLens1无法使用“空气敲击”手势?,unity3d,hololens,mrtk,Unity3d,Hololens,Mrtk,我有一个Unity应用程序,我想与Microsoft混合现实工具包MRTK集成。当我将MRTK v2.1或v2.2软件包添加到Unity项目中时,我可以在Unity编辑器中模拟air tap手势,应用程序会注册单击。但是,当我将应用程序发布到HoloLens1或在Unity中运行全息模拟器时,空气轻击手势不会记录单击 统一:2018.4.x MRTK:v2.1/v2.2 Unity场景设置: 具有带有独立输入模块的EventSystem 具有作为主摄影机的角色 进口了MRTK 混合现实工具包配置

我有一个Unity应用程序,我想与Microsoft混合现实工具包MRTK集成。当我将MRTK v2.1或v2.2软件包添加到Unity项目中时,我可以在Unity编辑器中模拟air tap手势,应用程序会注册单击。但是,当我将应用程序发布到HoloLens1或在Unity中运行全息模拟器时,空气轻击手势不会记录单击

统一:2018.4.x

MRTK:v2.1/v2.2

Unity场景设置:

具有带有独立输入模块的EventSystem 具有作为主摄影机的角色 进口了MRTK 混合现实工具包配置文件设置为DefaultHoloLens1ConfigurationProfile 当我使用上述设置运行场景时,air tap通过按空格键并单击以模拟在Unity编辑器中注册,但它不会注册到HoloLens1中

我是否缺少设置的某些部分?
可能要在我的场景中添加另一个输入组件?

要响应来自MRTK的单击事件,您需要侦听,而不是MRE可能正在侦听的Unity输入事件。一个好的监听事件是OnPointerClicked事件,它将在点击手、单击运动控制器或说出“选择”一词时触发。通常,输入处理程序仅在您将鼠标悬停在对象上时才会响应,因此要全局响应这些输入,您需要注册为全局输入处理程序

下面是一个脚本示例,每当单击指针时,该脚本将打印一些文本:

使用Microsoft.MixedReality.Toolkit; 使用Microsoft.MixedReality.Toolkit.Input; 使用UnityEngine; 公共类检测器示例:MonoBehavior { 公共无效启动 { PointerHandler PointerHandler=gameObject.AddComponent; pointerHandler.OnPointerClicked.AddListenerevt=>Debug.LogTap检测到+Time.Time; //将其设置为全局输入处理程序,否则此对象仅在具有输入焦点时接收事件 CoreServices.InputSystem.RegisterHandlerpointerHandler; } }
您可以了解更多关于和

Airtab关于什么?UI或任何其他涉及的脚本?@derHugo Unity应用程序加载一些托管在其他地方的NodeJS服务器上的UI,其中显示一些响应单击的简单方框几何图形。具体如何?要回答这个问题,我们需要确切地知道脚本应该如何识别/使用click/Air tap。@derHugo Ooh,我想我不太清楚,这是一个由第三方编写的Unity应用程序/场景,我刚刚将MRTK导入其中。因为“air-tap”在模拟器中工作,所以我觉得它很简单。我可以看更多的示例应用程序,我从这里得到:@derHugo“HelloWorld.unity”的场景太棒了!非常感谢@JuliaSchwarz!我刚刚尝试了这个示例代码,并将其放入相关的MRETestBed文件中,并连接了MRE方面的单击事件,它终于开始工作了!我很兴奋,非常感谢!示例代码非常有用,因此感谢您。另外,我看到了指针文档,可以从这里开始添加抓取功能。再次非常感谢您抽出时间!伟大的很高兴它起作用了。如果可能的话,你能把这个标记为正确答案并投票吗?是的!我把它标记为一个可接受的答案,并投了赞成票,但很显然,它不会公开显示,因为不幸的是,我的声誉还不够高。再次感谢你!