我有一个Unity应用程序,希望与Microsoft Mixed Reality Toolkit(MRTK)集成。当我将MRTK(v2.1或v2.2)程序包添加到我的Unity项目中时,我可以在Unity编辑器中模拟“空中敲打”手势,并且该应用会记录该点击。但是,当我将应用程序发布到我的HoloLens1(或在Unity中运行全息仿真器)时,“空中点击”手势不会注册点击。
团结:2018.4.x
MRTK :均为v2.1 / v2.2
统一场景设置:
DefaultHoloLens1ConfigurationProfile
当我使用上述设置运行场景时,空中点击会在Unity编辑器中注册(通过按空格键+单击以进行模拟),但是不会在HoloLens1中注册。
我缺少部分设置吗? 也许要在我的场景中添加另一个输入组件?
答案 0 :(得分:1)
要响应来自MRTK的点击事件,您需要监听MRTK pointer events,而不是MRE可能监听的Unity输入事件。一个很好的事件是OnPointerClicked
事件,该事件将在您的手被轻敲,单击运动控制器或单击“选择”时触发。通常,只有将鼠标悬停在对象上时,输入处理程序才会响应,因此要全局响应这些输入,您需要注册为全局输入处理程序。
下面是一个脚本示例,该脚本将在每次单击指针时打印一些文本:
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using UnityEngine;
public class DetectTapExample : MonoBehaviour
{
public void Start()
{
PointerHandler pointerHandler = gameObject.AddComponent<PointerHandler>();
pointerHandler.OnPointerClicked.AddListener((evt) => Debug.Log("Tap Detected " + Time.time));
// Make this a global input handler, otherwise this object will only receive events when it has input focus
CoreServices.InputSystem.RegisterHandler<IMixedRealityPointerHandler>(pointerHandler);
}
}