首页 > 解决方案 > 在 Unity 中触摸结束后,有没有办法查找最后按下的项目是否是 UI 元素

问题描述

我正在制作一个 2D 无限运行平台游戏,其中玩家在触摸输入结束后跳跃。我的游戏中也有一些 UI 按钮元素。但是当我从主暂停屏幕返回到游戏屏幕时,我的角色正在跳跃。这是我尝试过的代码。touch.phase==touchphase.end 存在一些问题并且不能一起工作。但是由于某种原因 JumpAndResetPower() 被执行,即使我点击了 UI 上的恢复按钮。

if(Input.touchCount>0)
    {

        Touch touch = Input.GetTouch(0);

        if(touch.phase==TouchPhase.Began && !EventSystem.current.IsPointerOverGameObject(touch.fingerId))
        {
            accumilateJumpPower();
        }
        else if(touch.phase==TouchPhase.Ended && !EventSystem.current.IsPointerOverGameObject(touch.fingerId))
        {
            JumpAndResetPower();
        }
    }

标签: c#unity3d

解决方案


我解决它的方法是使用每次按下暂停按钮时设置的变量。稍后当我按下播放按钮时,只有在未设置变量的情况下才会执行跳转代码。否则,如果设置了变量,它将取消设置变量。


推荐阅读