Android Unity3d-触摸输入问题

Android Unity3d-触摸输入问题,android,ios,unity3d,multi-touch,Android,Ios,Unity3d,Multi Touch,我开发了一个游戏,需要用户有一个单一的触摸画过去链接多个对象。当前使用鼠标按钮作为触摸输入,代码如下: if(Input.GetButton("Fire1")) { mouseIsDown = true; ...//other codes } 它可以很好地使用鼠标,但当我为多点触摸设备编译它时,它会给我带来问题。在多点触控设备中,如果您有两个手指向下,则中点将作为输入。但若我已经触摸了一个物体,然后用食指指向屏幕,它会弄乱我的游戏输入,给我带来大

我开发了一个游戏,需要用户有一个单一的触摸画过去链接多个对象。当前使用鼠标按钮作为触摸输入,代码如下:

if(Input.GetButton("Fire1"))
    {
        mouseIsDown = true;
        ...//other codes
    }
它可以很好地使用鼠标,但当我为多点触摸设备编译它时,它会给我带来问题。在多点触控设备中,如果您有两个手指向下,则中点将作为输入。但若我已经触摸了一个物体,然后用食指指向屏幕,它会弄乱我的游戏输入,给我带来大破坏


我想要的是将它限制为仅一次触摸。如果第二个手指碰到了,忽略它。我如何才能做到这一点?

您正在使用Input.GetButton。按钮不是触摸式的。你可能想看看

如果您需要支持多输入类型的设备,您可能需要考虑编写脚本自己的管理器来抽象出这一点。

是您所需要的:

     if ((Input.touchCount == 1) && (Input.GetTouch (0).phase == TouchPhase.Began))   {
            mouseIsDown = true;
            ...//other codes
     }

由于
输入,只有当一个手指在屏幕上时才会触发。touchCount==1

我会进行一些轮询

因此,在Update()中,我通常会执行以下操作:

foreach (Touch touch in Input.touches)
{
    // Get the touch id of the current touch if you're doing multi-touch.
    int pointerID = touch.fingerId;        

    if (touch.phase == TouchPhase.Began)
    {
        // Do something off of a touch.
    }
}
如果您想了解更多信息,请查看:

他只想检测一个手指,而忽略其他手指。您拥有的代码将在屏幕上检测到尽可能多的手指。这是真的,但我认为我会将此作为最佳实践,因为他可以管理手指id,例如,如果需要,以确保它是相同的手指id。我发现这是一个很好的方法来锁定任何错误。他可以,但你的代码没有。如果将两个或更多手指放在屏幕上,if语句将始终运行。也许您应该在代码中实现finger id来帮助其他人。