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

Unity:如何让ScrollRect自适应内容高度同时设置最大高度限制

实现方案

以下是Unity UGUI环境下的完整实现步骤:

1. 层级结构确认

首先确定UI层级如下:

  • 外层容器(容器1)
    • ScrollRect(容器2)
      • Viewport
        • Content
          • 文本组件(Text/TMP_Text)
      • 滚动条(可选)

2. 各组件属性配置

外层容器(容器1)

  • 添加Content Size Fitter组件:
    • 水平适配:根据需求选择Unconstrained(固定宽度)或Preferred Size(自适应宽度)
    • 垂直适配:选择Preferred Size
  • 如果容器1内还有除ScrollRect外的其他元素,可添加Vertical Layout Group组件,自行调整内边距和子元素间距

ScrollRect(容器2)

  • 基础属性设置:
    • 取消勾选Horizontal,仅保留Vertical滚动
    • Viewport关联对应视口对象,Content关联对应内容对象
  • 锚点设置为父节点顶部对齐,Pivot设置为(0.5, 1),保证高度向下延伸

Content对象

  • 添加Content Size Fitter组件:
    • 水平适配:Preferred Size
    • 垂直适配:Preferred Size
  • 添加Vertical Layout Group组件:
    • 勾选Control Child Size的Width和Height
    • 勾选Child Force Expand的Width,取消勾选Height
    • 自行调整内边距、行间距参数
  • 锚点设置为Viewport顶部对齐,Pivot设置为(0.5, 1)

文本组件

  • 勾选文本的Auto Size(TMP文本),或设置为自动换行模式,保证文本高度会随内容自动计算

3. 最大高度限制脚本实现

UGUI原生的ContentSizeFitter不支持最大高度限制,所以需要添加一个简单的控制脚本,挂载到ScrollRect对象上:

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(ScrollRect))]
public class ScrollRectMaxHeight : MonoBehaviour
{
    [Header("最大高度限制")]
    public float maxHeight = 400f;
    private RectTransform contentRt;
    private RectTransform scrollRt;

    void Awake()
    {
        scrollRt = GetComponent<RectTransform>();
        contentRt = GetComponent<ScrollRect>().content.GetComponent<RectTransform>();
    }

    void Update()
    {
        // 强制刷新布局获取最新内容高度
        LayoutRebuilder.ForceRebuildLayoutImmediate(contentRt);
        // 滚动框高度取内容高度和最大高度的较小值
        float finalHeight = Mathf.Min(contentRt.sizeDelta.y, maxHeight);
        scrollRt.sizeDelta = new Vector2(scrollRt.sizeDelta.x, finalHeight);
    }
}

你可以根据需求调整maxHeight参数的数值,设置需要的最大高度阈值即可。

效果验证

  • 文本内容较少时:Content高度小于最大高度,ScrollRect高度和Content一致,外层容器跟着自适应缩小,无滚动效果
  • 文本内容较多时:Content高度超过最大高度,ScrollRect高度固定为设定的最大高度,内容超出视口范围,滚动条自动生效可以滑动查看内容
    效果示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:18:04