unity 点击Ended状态判断是否点击在UI上

问题描述

  • Unity移动端在解决点击UI界面的误触问题的时候会采用如下代码:
if (thisTouch.phase == TouchPhase.Began) {
                if(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
                {
                    return;
                }
            }
  • 因为业务逻辑需要,想在TouchPhase.Ended里面加入这个的判断,但是发现这个IsPointerOverGameObject的函数不起作用,于是需要新增一个变量来解决。

问题解决

  • 在类里面新增一个变量
private bool touchOnButton;
  • 然后在Began里面加一个赋值,表示此次点击是在UI上的
if (thisTouch.phase == TouchPhase.Began) {
                if(EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
                {
                    touchOnButton = true;
                    return;
                }
            }
  • 然后在Ended里面加上如下代码
if (thisTouch.phase == TouchPhase.Ended)
            {
                if(touchOnButton)
                {
                    touchOnButton = false;
                    return;
                }
  • 如上Ended里面就可以判断到是否是UI界面的点击了。

你可能感兴趣的:(Unity)