Unity3d - 触摸输入问题

Unity3d - Touch Input issue

我开发了一款游戏,需要用户通过一次触摸来绘制 link 多个对象。当前使用鼠标按钮作为此代码的触摸输入:

if(Input.GetButton("Fire1"))
    {
        mouseIsDown = true;
        ...//other codes
    }

它在鼠标上工作得很好,但是当我为多点触控设备编译它时会出现问题。在多点触控设备中,如果您有 2 个手指向下,则中间点将作为输入。但是如果我已经触摸了一个物体然后用第二根手指向下触摸屏幕,它会弄乱我的游戏输入并给我带来严重的设计。

我想要的是将其限制为仅 1 次触摸。如果第二根手指接触到,请忽略它。我怎样才能做到这一点?

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

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

以下是您所需要的:

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

因为 Input.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.
    }
}

如果您正在寻找更多信息,请查看: TouchPhases in Unity