You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移动端Unity游戏:滚动UI文本时背景地图误滑动问题求助

解决Unity移动端滚动UI时背景地图跟随移动的问题

你遇到的核心问题是编辑器和移动端的触摸检测逻辑不一致——你加的EventSystem.current.IsPointerOverGameObject()在编辑器里能识别鼠标是否在UI上,但移动端触摸事件需要额外传入触摸ID才能正确判断,这就是为什么移动端无效的原因。下面给你分步解决的方案:

1. 修正移动端的UI触摸检测逻辑

把你原来的判断代码替换成适配移动端和编辑器的版本,放到地图拖动逻辑的最开头:

// 先判断当前触摸是否在UI上,区分编辑器和移动端
bool isTouchingUI = false;

#if UNITY_EDITOR || UNITY_STANDALONE
// 编辑器/PC端用鼠标判断
isTouchingUI = EventSystem.current.IsPointerOverGameObject();
#else
// 移动端需要传入触摸点的fingerId
if (Input.touchCount > 0)
{
    Touch touch = Input.GetTouch(0);
    isTouchingUI = EventSystem.current.IsPointerOverGameObject(touch.fingerId);
}
#endif

// 如果触摸在UI上,直接跳过地图拖动逻辑
if (isTouchingUI || EventSystem.current.currentSelectedGameObject != null)
{
    return;
}

// 下面是你原来的地图拖动代码
if(dragToPan){ 
    if(!mapping && ready){ 
        if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved) { 
            if(Input.GetTouch(0).position.y > screenY/12){ 
                Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition; 
                CheckBorders(); 
                cam.Translate(-touchDeltaPosition.x*dragSpeed*Time.deltaTime, -touchDeltaPosition.y*dragSpeed*Time.deltaTime, 0); 
                ClampCam(); 
            } 
        } 
    } 
}

为什么要这么改?因为移动端的触摸事件是基于fingerId区分的,不带参数的IsPointerOverGameObject()只会响应鼠标输入,对触摸事件完全无效,必须传入对应触摸点的fingerId才能让EventSystem正确识别触摸是否落在UI元素上。

2. 确保UI的可检测性

除了代码逻辑,还要检查你的UI设置是否正确:

  • 确保场景中有EventSystem对象(如果没有,右键菜单栏选UI > EventSystem创建)。
  • 弹出的UI所在的Canvas必须带有GraphicRaycaster组件(默认创建Canvas时会自动添加,不小心删掉的话要加回来)。
  • 滚动UI里的元素(比如Text、Scrollbar)的Raycast Target属性要开启(在Inspector面板里,默认是勾选的,如果关了会导致EventSystem检测不到这些UI)。

3. 额外优化建议

如果你担心多个触摸点的干扰,可以在判断触摸移动时,只处理第一个触摸点(你代码里已经这么做了),同时确保滚动UI的ScrollRect组件的OnDrag事件会优先拦截触摸输入,这样EventSystem就能正确识别当前触摸是在操作UI还是地图。

这样修改后,移动端滚动UI时,地图就不会跟着移动了,编辑器里的逻辑也能保持正常。

内容的提问来源于stack exchange,提问作者Angelsm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:02:28