在 2D 布局上,有一个固定的类似按钮的游戏对象,该游戏对象具有具有 OnMouseDown 和OnMouseUp
功能的脚本:触摸它并将手指移开并释放,OnMouseUp
能否在屏幕上获得相应的手指释放位置?
问题是:这是一个多人游戏,屏幕上还有许多其他手指!
您不应该为此使用OnMouseDown
和OnMouseUp
回调函数,因为这需要您在桌面上获得Input.mousePosition
的触摸位置,在移动设备上获得Input.touches
。
这应该使用OnPointerDown
和OnPointerUp
函数来完成,这些函数为您提供PointerEventData
参数。您可以使用PointerEventData.position
访问那里的指针位置。它将在移动和桌面设备上工作,而无需为每个平台编写不同的代码。请注意,必须实现IPointerDownHandler
和IPointerUpHandler
接口才能调用这些函数。
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Mouse Down: " + eventData.position);
}
public void OnPointerUp(PointerEventData eventData)
{
Debug.Log("Mouse Up: " + eventData.position);
}
如果您遇到问题,您可以随时访问这篇文章中的故障排除部分以了解原因。
简短回答是的。 但是,这在多点触控中变得有点混乱。 基本上您可以随时获得mouse
或finger
位置。 如果需要,您可以实时跟踪它,并随时轻松显示鼠标的位置。Input.MousePosition
变量很容易抓取。 当您有多个需要跟踪的mouse
或finger
时,问题就来了哪个手指向上,哪些手指仍然向下。不过,如果你设置正确,它应该可以工作,只是需要更多的努力。不过,我的建议是,如果您处理多个触摸,请使用独立的多点触控输入模块。它在资产商店中免费,我为您提供了一个链接。这很简单。