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

Can you get finger position from OnMouseDown and OnMouseUp?

在 2D 布局上,有一个固定在适当位置的类似按钮的 GameObject,它有一个带有 OnMouseDown 和 OnMouseUp 功能的脚本:触摸它然后将手指移开并释放,可以 OnMouseUp 得到相应的手指在屏幕上的释放位置?

问题是:它是多人游戏,屏幕上有很多其他手指!

简短回答是。然而,这与多点触控有点混淆。基本上你可以随时获得 mousefinger 位置。如果需要,您可以实时跟踪它并随时轻松显示鼠标的位置。 Input.MousePosition 变量很容易获取。当您有多个 mousefinger 时,问题就来了,因为您需要跟踪哪根手指向上,哪根手指仍然向下。尽管如此,如果您设置正确,它应该可以工作,只是需要更多的努力。不过,我的建议是,如果您处理不止一次触摸,请在资产商店中免费使用 Standalone MultiTouch Input Module.,我为您提供了一个 link。非常简单。

不应该 为此使用 OnMouseDownOnMouseUp 回调函数,因为这需要你使用 [= 获得触摸位置13=] 在台式机上,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);
}

如果您 运行 遇到问题,您可以随时访问 post 上的故障排除部分以了解原因。