你能从OnMouseDown和OnMouseUp获得手指位置吗?



在 2D 布局上,有一个固定的类似按钮的游戏对象,该游戏对象具有具有 OnMouseDown 和OnMouseUp功能的脚本:触摸它并将手指移开并释放,OnMouseUp能否在屏幕上获得相应的手指释放位置?

问题是:这是一个多人游戏,屏幕上还有许多其他手指!

不应该为此使用OnMouseDownOnMouseUp回调函数,因为这需要您在桌面上获得Input.mousePosition的触摸位置,在移动设备上获得Input.touches

这应该使用OnPointerDownOnPointerUp函数来完成,这些函数为您提供PointerEventData参数。您可以使用PointerEventData.position访问那里的指针位置。它将在移动和桌面设备上工作,而无需为每个平台编写不同的代码。请注意,必须实现IPointerDownHandlerIPointerUpHandler接口才能调用这些函数。

public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Mouse Down:  " + eventData.position);
}
public void OnPointerUp(PointerEventData eventData)
{
Debug.Log("Mouse Up: " + eventData.position);
}

如果您遇到问题,您可以随时访问这篇文章中的故障排除部分以了解原因。

简短回答是的。 但是,这在多点触控中变得有点混乱。 基本上您可以随时获得mousefinger位置。 如果需要,您可以实时跟踪它,并随时轻松显示鼠标的位置。Input.MousePosition变量很容易抓取。 当您有多个需要跟踪的mousefinger时,问题就来了哪个手指向上,哪些手指仍然向下。不过,如果你设置正确,它应该可以工作,只是需要更多的努力。不过,我的建议是,如果您处理多个触摸,请使用独立的多点触控输入模块。它在资产商店中免费,我为您提供了一个链接。这很简单。

最新更新