Unity3D UI在编辑器中的作用与设备不同

时间:2016-01-25 15:10:03

标签: c# ios unity3d

在我的代码中,我在LateUpdate函数中有以下几行:

if (!EventSystem.current.IsPointerOverGameObject())
{
      if (Input.touchCount == 2 && Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved)
      {

      float dot = Vector2.Dot(Input.GetTouch(0).deltaPosition.normalized, Input.GetTouch(1).deltaPosition.normalized);

      if (dot < fingerSepValue )
      {
          CameraZoom();
      }
      else
      {
          MoveCamera();
      }
    }

    if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
    {
        var touchDeltaPosition = CameraOrbit();
    }
}

此代码仅在用户未触及UI图层时运行。这在我的Unity项目中工作得很好,但是当我构建到iPad时,无论我在屏幕上触摸的位置(无论是UI还是其他),相机移动代码都会被调用。

有谁知道这个的原因?难道我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用IPointerDownHandler,IPointerUpHandler等事件执行相同的操作。然后你必须将Physics Raycaster添加到相机并与包含脚本的游戏对象相撞。或者,如果必须使用IsPointerOverGameObject http://forum.unity3d.com/threads/touch-press-pass-through-all-ui-elements.272892/

,您可以在此处寻找解决方案