Unity3D UI 在编辑器中的行为与设备不同
本文关键字:UI 编辑器 Unity3D | 更新日期: 2023-09-27 18:31:44
在我的代码中,我的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 还是其他),都会调用摄像机移动代码。
有谁知道原因吗?我做错了什么吗?
您可以使用 IPointerDownHandler、IPointerUpHandler 等事件执行相同的操作。然后,您必须将物理光线投射器添加到摄像机,并将碰撞体添加到包含脚本的游戏对象。或者,如果您必须使用IsPointerOverGameObject http://forum.unity3d.com/threads/touch-press-pass-through-all-ui-elements.272892/,您可以在此处寻找解决方案