【发布时间】:2018-10-16 20:11:21
【问题描述】:
在 2D 布局上,有一个固定位置的类似按钮的游戏对象,它有一个带有 OnMouseDown 和 OnMouseUp 功能的脚本:触摸它并将手指移开并释放,OnMouseUp 可以得到那个 屏幕上对应的手指释放位置?
关键是:它是多人游戏,屏幕上有许多其他手指!
【问题讨论】:
在 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);
}
如果您遇到问题,您可以随时访问this 帖子上的故障排除部分了解原因。
【讨论】:
简短的回答是的。然而,这变得有点混乱多点触控。基本上你可以随时获得mouse 或finger 的位置。如果需要,您可以实时跟踪它并随时轻松显示鼠标的位置。 Input.MousePosition 变量很容易获取。当您有多个mouse 或finger 时,问题就出现了,因为您需要跟踪哪个手指向上,哪些手指仍然向下。不过,如果您设置正确,它应该可以工作,只是需要更多的努力。不过,我的建议是,如果您的操作不止一次,请在资产商店中免费使用Standalone MultiTouch Input Module.,并且我为您提供了一个链接。这很简单。
【讨论】: