鼠标向上与 Unity 中的修饰

Ale*_*dru 1 .net c# unity-game-engine ios unity5

我有一点问题。我似乎找不到一种很好的方法来区分 Unity 是触发鼠标还是触摸事件。我所说的触摸是指当用户在触摸显示屏上触摸某些东西后将手指从屏幕上松开时。

问题是这样的:我有一个游戏逻辑问题,用户既放开他们用鼠标选择的东西,又同时触摸/释放触摸以单击 UI 按钮(换句话说,我试图检测仅释放鼠标,或者仅释放触摸 - 我该怎么做?)。我试过同时使用Input.GetMouseButtonUp(0)Input.GetMouseButton(0),但如果是触摸事件或鼠标按钮事件,两者都会改变它们的状态。

那么如何正确区分两者呢?我什至尝试使用Touch.fingerId可以很好地跟踪/区分仅触摸事件的属性,但是,问题是我仍然无法区分仅使用鼠标,Input.GetMouseButton(0)因为即使在触摸时它也会触发。

有没有人碰巧知道在 Unity 中单独检测鼠标释放或触摸释放的正确方法是什么?

编辑

有人不理解手头的问题,所以让我们假设您有一台支持触摸的桌面设备。添加这个脚本:

void Update () {
    if (Input.GetMouseButtonDown(0))
        Debug.Log("Mouse button down.");
    if (Input.GetMouseButtonUp(0))
        Debug.Log("Mouse button up.");
}
Run Code Online (Sandbox Code Playgroud)

如果您用鼠标单击并按住鼠标,在按住的同时,您可以用手指触摸并松开,这将记录Mouse button up.尽管您没有松开鼠标按钮。如何区分鼠标抬起与触摸释放?

Pro*_*mer 7

对于台式机

  • 鼠标按下 - Input.GetMouseButtonDown
  • 鼠标向上 - Input.GetMouseButtonUp

例子:

if (Input.GetMouseButtonDown(0))
{
    Debug.Log("Mouse Pressed");
}

if (Input.GetMouseButtonUp(0))
{
    Debug.Log("Mouse Lifted/Released");
}
Run Code Online (Sandbox Code Playgroud)

对于移动设备

  • 降落 - TouchPhase.Began
  • 润色 - TouchPhase.Ended

例子:

if (Input.touchCount >= 1)
{
    if (Input.touches[0].phase == TouchPhase.Began)
    {
        Debug.Log("Touch Pressed");
    }

    if (Input.touches[0].phase == TouchPhase.Ended)
    {
        Debug.Log("Touch Lifted/Released");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您遇到通过 UI 对象点击其他对象的问题,请参阅这篇文章,了解如何正确检测任何类型的游戏对象上的点击。