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
}
答案 0 :(得分:-2)
根据单位的帮助论坛here。
EventSystem.current.IsPointerOverGameObject()
要求传递参数中的触摸ID。尝试将Input.touches[i].fingerId作为参数传递给它,以使其在移动设备中起作用,而对于编辑器,则需要将其保留为空。
尝试一下EventSystem.current.IsPointerOverGameObject(Input.touches[i].fingerId)
编辑:糟糕,我没有看到您已经在我看到第一行的代码中传递了触摸ID,并认为丢失了。