IsPointerOverGameObject的触摸总返回false

时间:2019-07-04 15:09:36

标签: c# unity3d

IsPointerOverGameObject始终返回false进行触摸。 我已经尝试了所有可以找到的解决方案。

它在编辑器中完美运行-点击被阻止通过UI进行,但没有移动设备,此方法始终返回false。

这是我的代码:

private static bool IsPointerOverGameObject()
    {
        bool isPointerOverGameObject = EventSystem.current.IsPointerOverGameObject();

        for (int i = 0; i < Input.touchCount; i++)
        {
            Touch touch = Input.touches[i];
            if (touch.phase != TouchPhase.Canceled && touch.phase != TouchPhase.Ended)
            {
                if (EventSystem.current.IsPointerOverGameObject(Input.touches[i].fingerId))
                {
                    isPointerOverGameObject = true;
                    break;
                }
            }
        }

        return isPointerOverGameObject;
    }

public void OnMouseDown()
{
    if (IsPointerOverGameObject())
    {
        return;
    }

    // code
}

1 个答案:

答案 0 :(得分:-2)

根据单位的帮助论坛here

EventSystem.current.IsPointerOverGameObject()要求传递参数中的触摸ID。尝试将Input.touches[i].fingerId作为参数传递给它,以使其在移动设备中起作用,而对于编辑器,则需要将其保留为空。

尝试一下EventSystem.current.IsPointerOverGameObject(Input.touches[i].fingerId)

编辑:糟糕,我没有看到您已经在我看到第一行的代码中传递了触摸ID,并认为丢失了。