【问题标题】:Can you get finger position from OnMouseDown and OnMouseUp?你能从 OnMouseDown 和 OnMouseUp 获得手指位置吗?
【发布时间】:2018-10-16 20:11:21
【问题描述】:

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

关键是:它是多人游戏,屏幕上有许多其他手指!

【问题讨论】:

    标签: c# unity3d onmouseup


    【解决方案1】:

    不应该为此使用OnMouseDownOnMouseUp 回调函数,因为这需要您在桌面上获得Input.mousePositionInput.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);
    }
    

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

    【讨论】:

    • 哇哦,一个全新的宇宙等待探索。我刚刚检查了一下,看起来很棒。谢谢!
    【解决方案2】:

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

    【讨论】:

    • 谢谢。我在测试你时将 Unity Remote 与平板电脑一起使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多