c# - 在 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();
}
}
解决方案
我解决它的方法是使用每次按下暂停按钮时设置的变量。稍后当我按下播放按钮时,只有在未设置变量的情况下才会执行跳转代码。否则,如果设置了变量,它将取消设置变量。
推荐阅读
- javascript - 如何在javascript中有效地检查假相等对象?
- microsoft-identity-platform - CompactToken 验证失败 80049228
- ios - 这个奇怪的图案是什么画的
- java - 如何不断检查布尔变化?
- javascript - 具有可变周数的 JQuery 日期范围选择器日历
- iot - Azure IoT 开发工具包引导加载程序
- python - 不明白这些 ModuleNotFound 错误
- multithreading - 阅读缓存 DIY 书籍时出现的 Go map 线程安全问题
- c# - 为什么包含 ValueTuple 的结构可以满足非托管约束,而 ValueTuple 本身却不能?
- ruby-on-rails - rtf 模板中的条件或循环语句