C# 如何处理Oculus Gear VR触摸板上的刷卡,避免点击事件

C# 如何处理Oculus Gear VR触摸板上的刷卡,避免点击事件,c#,unity3d,unity5,oculus,gear-vr,C#,Unity3d,Unity5,Oculus,Gear Vr,我有一个滚动视图,其中包含几个按钮作为内容面板下的子元素。层次结构如下所示: 我在附加到ScrollView的脚本上实现了类似这样的OVRTouchpad.TouchHandler事件: void Start() { #if OVR && !UNITY_EDITOR OVRTouchpad.Create(); OVRTouchpad.TouchHandler += HandleTouchHandler; #endif } void Handle

我有一个滚动视图,其中包含几个按钮作为内容面板下的子元素。层次结构如下所示:

我在附加到ScrollView的脚本上实现了类似这样的
OVRTouchpad.TouchHandler
事件:

void Start()
{
    #if OVR && !UNITY_EDITOR
    OVRTouchpad.Create();
    OVRTouchpad.TouchHandler += HandleTouchHandler;
    #endif
}

void HandleTouchHandler (object sender, System.EventArgs e)
{
    OVRTouchpad.TouchArgs touchArgs = (OVRTouchpad.TouchArgs)e;
    if(touchArgs.TouchType == OVRTouchpad.TouchEvent.Left || touchArgs.TouchType == OVRTouchpad.TouchEvent.Up)
    {
        // Code to scroll UP for swipe in directions LEFT/UP
    }
    else if(touchArgs.TouchType == OVRTouchpad.TouchEvent.Right || touchArgs.TouchType == OVRTouchpad.TouchEvent.Down)
    {
        // Code to scroll DOWN for swipe in directions RIGHT/DOWN
    }
}
问题:

在我使用时,即使我尝试刷卡,它也会处理
点击
输入。所以每次我在盯着按钮(滚动视图的子项)的同时向任何方向滑动。按钮被点击,带我进入其他菜单。我不确定这是否是Gear VR输入系统的理想行为。正如我在Oculus Home应用程序(以及商店中的其他应用程序)中看到的,它只会滚动,不会触发对子元素的点击

如果检测到刷卡,是否有任何方法防止单击/点击


非常感谢您提供的任何帮助。

您是否尝试过先插入IF语句来处理singletap触发器

  if(touchArgs.TouchType == OVRTouchpad.TouchEvent.SingleTap)
  {
     //TODO: Nest IF statements here checking conditions which indicate swipe instead of tap. If nothing further detected, process single tap. 
     //Otherwise continue with swipe direction handling.
  }
但是,使用本教程中提到的VRInput脚本可能是最好的选择,因为它也可以处理方向输入的滑动

斯尼皮:

public event Action<SwipeDirection> OnSwipe;                // Called every frame passing in the swipe, including if there is no swipe.
公共事件操作onswip;//调用滑动中经过的每一帧,包括没有滑动的情况。

如果您还没有完成,您也应该将此内容发布在网站上。谢谢您的关注。我也在那里发布了一个问题。如果你得到了答案,一定要在这里发布答案,并将其标记为完成。我面临这个问题,因为事件系统正在接收点击,就像鼠标点击,如果指针在某个按钮上。我想防止这种情况发生。要么你用点击触发器进行干预并处理它,要么使用不同的事件系统/方法。VR输入看起来绝对是最有希望实现更好控制的输入。它记录手指在触摸板上的位置以及释放手指时的位置,以确定手指是滑动还是轻触。就像你需要的一样。在使用Unity UI时,我不能使用不同的事件系统。如果您没有选择,请使用框碰撞器创建手动按钮。