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

Unity中两个重叠Scroll Rect如何实现同步滚动?

实现两个Scroll Rect同步滚动的方法

方法一:通过脚本同步滚动值

写一个简单的C#脚本,监听其中一个Scroll Rect的滚动值变化,同步到另一个Scroll Rect。如果需要双向同步,可同时监听两个Scroll Rect的滚动事件。

示例代码:

using UnityEngine;
using UnityEngine.UI;

public class ScrollSync : MonoBehaviour
{
    public ScrollRect targetScrollRect;
    private ScrollRect currentScrollRect;
    private bool isSyncing = false; // 避免循环触发同步逻辑

    void Awake()
    {
        currentScrollRect = GetComponent<ScrollRect>();
        // 绑定当前ScrollRect的滚动事件
        currentScrollRect.onValueChanged.AddListener(SyncToTarget);
        // 绑定目标ScrollRect的滚动事件,实现双向同步
        targetScrollRect.onValueChanged.AddListener(SyncFromTarget);
    }

    void SyncToTarget(Vector2 pos)
    {
        if (!isSyncing)
        {
            isSyncing = true;
            targetScrollRect.horizontalNormalizedPosition = pos.x;
            targetScrollRect.verticalNormalizedPosition = pos.y;
            isSyncing = false;
        }
    }

    void SyncFromTarget(Vector2 pos)
    {
        if (!isSyncing)
        {
            isSyncing = true;
            currentScrollRect.horizontalNormalizedPosition = pos.x;
            currentScrollRect.verticalNormalizedPosition = pos.y;
            isSyncing = false;
        }
    }
}

使用步骤:

  • 创建C#脚本并粘贴上述代码
  • 将脚本挂载到其中一个Scroll Rect对象上
  • 在Inspector面板中,把另一个Scroll Rect拖入targetScrollRect字段
  • 运行测试,滚动任意一个Scroll Rect,另一个会同步滚动

方法二:共用同一个Scrollbar

如果两个Scroll Rect的滚动方向一致(同为横向或纵向),可以让它们共用一个Scrollbar:

  • 分别选中两个Scroll Rect,在Inspector的Scroll Rect组件中,将同一个Scrollbar拖入对应的Horizontal Scrollbar或Vertical Scrollbar字段
  • 此时操作Scrollbar或任意一个Scroll Rect的内容,两个Scroll Rect都会同步滚动

注意事项

  • 确保两个Scroll Rect的Content尺寸、滚动方向(Horizontal/Vertical的勾选状态)完全一致,否则同步后会出现显示错位
  • 如果每次生成时会切换两个Scroll Rect的位置,需在生成逻辑中重新绑定脚本的targetScrollRect,或自动关联新生成的两个Scroll Rect

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:05:35