>> >> >> Reference << << << <<<<<<Ref>>>>>>
>> >> >> Indexer << << << <<<<<<Idx>>>>>>
Matched: 0

Tags

    Categories

      Types

        Top Results

          Layout
          M: 2025-06-01 - ljf12825

          Layout System

          LayoutSystem

          Layout Group

          Layout Group是Unity UI自动布局系统的核心组件之一,用于在UI Canvas下自动排列其他子物体。它极大地简化了UI元素的排列和适配逻辑,让UI开发变得更结构化、响应式、更易维护

          Layout Group是一类MonoBehaviour脚本,用于自动排列RectTransform子物体的位置与尺寸,不需要你手动拖动它们

          类型说明用途示例
          HorizontalLayoutGroup子物体沿 水平方向排列菜单栏、工具条、横向列表
          VerticalLayoutGroup子物体沿 垂直方向排列聊天记录、竖向按钮组
          GridLayoutGroup子物体按 网格排列(行列)背包格子、关卡选择界面
          LayoutGroup抽象基类不直接使用

          Horizontal / Vertical Layout Group

          属性说明
          Padding容器四周的边距
          Spacing子物体之间的间隔
          Child Alignment子物体在主轴上的对齐方式(左/中/右)
          Reverse Arrangement排列方向反转:从上到下 → 从下到上
          Control Child Size控制子物体是否填满空间
          Use Child Scale是否使用子物体的缩放比例
          Child Force Expand启用时多个子物体会调整间距,以填充满Width或Height

          Horizontal Layout Group适用场景:菜单栏、Tab标签页、道具快捷栏等

          Vertical Layout Group适用场景:排行榜列表、聊天内容、选项按钮组等

          Grid Layout Group

          用于将子物体排列成规则网格,每个格子的大小统一

          属性说明
          Padding容器四周的边距
          Cell Size每个格子的宽高
          Spacing格子之间的间距
          Start Corner从哪个角开始排列
          Start Axis是优先横向填充还是纵向
          Child Alignment子物体整体对齐方式
          Constraint行数/列数限制(可固定行或列)

          使用场景:背包系统、九宫格、商城道具、分页列表

          常见问题

          问题原因 / 解决方式
          改了内容不刷新布局调用 LayoutRebuilder.ForceRebuildLayoutImmediate()
          动态添加元素时抖动SetActive(false) 再添加,最后 SetActive(true)
          动画或手动设置位置被覆盖LayoutGroup 会自动控制,需禁用 LayoutGroup 才能手动操作
          ContentSizeFitter + LayoutGroup 死循环不要放在同一个 GameObject 上

          Layout Element

          Layout Element用于告诉布局系统如何排布当前UI元素,它本身不会影响UI的大小或位置,而是为其所在的Layout Group提供布局建议(尺寸、优先级等),从而参与整个UI的自动布局流程

          属性含义举例说明
          Ignore Layout是否忽略布局系统设置为 true 会让 Layout Group 忽略它
          Min Width / Height最小宽高不小于这个尺寸
          Preferred Width / Height首选宽高想要的尺寸(如果有空间)
          Flexible Width / Height灵活宽高有多大就能占多大,类似“权重” ,多个元素剩余空间分配按权重计算
          Layout Priority优先级如果GameObject上有多个布局相关组件,按优先级顺序计算,优先级与数值成正比

          常见用途

          场景使用方式
          某个按钮不想自动拉伸设置 Flexible Width = 0
          聊天条自动增长宽度设置 Preferred Width = Text 宽度
          图片强制保持比例设置 Preferred Width/Height 同步更新
          某个子元素不参与布局勾选 Ignore Layout

          Content Size Fitter

          Content Size Fitter用于让UI元素根据其子元素或自身内容的大小,自动调整RectTransform的尺寸,是实现响应式UI的关键工具之一

          比如:让聊天气泡、弹窗、按钮、文字背景根据内容自动扩展

          属性名类型说明
          Horizontal Fitenum控制横向尺寸的自动适配方式
          Vertical Fitenum控制纵向尺寸的自动适配方式

          每个方向的选项有三种:

          • Unconstrained(不自动适配,默认)
          • Min Size(缩小到最小可用大小)
          • Preferred Size(扩展到推荐大小)

          常见用途

          使用场景使用方式
          聊天气泡自动撑开Vertical Fit = Preferred Size(文本高度)
          Horizontal Fit = Preferred Size(文本宽度)
          按钮随文字自适应宽度按钮 Image + Text + ContentSizeFitter
          ScrollView 内容自动撑开在 Content 上加 ContentSizeFitter + Layout Group
          警告弹窗根据文本自动扩展大小Text + 背景图 + ContentSizeFitter

          常见问题

          问题原因 & 解决方案
          和 LayoutGroup 冲突不要把 ContentSizeFitter 和 LayoutGroup 放在同一个 GameObject 上,要分开:父挂 LayoutGroup,子挂 ContentSizeFitter
          内容变了但尺寸没变调用:LayoutRebuilder.ForceRebuildLayoutImmediate(transform as RectTransform) 手动刷新
          不生效子物体未使用 LayoutElement 或未正确设置 Preferred Size
          UI 抖动动态内容更新太频繁,建议只在必要时刷新布局

          示例

          动态文字撑开背景
          public TextMeshProUGUI messageText;
          public RectTransform bubble;
          
          void SetMessage(string msg)
          {
            messageText.text = msg;
            LayoutRebuilder.ForceRebuildLayoutImmediate(bubble);
          }
          
          聊天列表自动滚到底

          搭配ScrollRect

          • Content上加VerticalLayoutGroup + ContentSizeFitter
          • 发送新消息后滚动到底部

          Aspect Ratio Fitter

          Aspect Ratio Fitter用于强制一个UI元素保持固定的宽高比(Aspect Ratio),无论父物体如何拉伸、屏幕怎么变化,它都能保持比例不变

          通常用于:

          • 图片防拉伸
          • 视频播放器窗口
          • 正方形/圆形按钮保持比例
          • 多分辨率适配中的UI统一性

          属性说明

          属性名类型含义
          Aspect Mode枚举控制哪个方向跟随调整以维持宽高比
          Aspect Ratiofloat目标宽高比(width / height)
          Aspect Mode
          模式含义
          None不启用比例适配
          Width Controls Height宽度不变,根据宽度调整高度
          Height Controls Width高度不变,根据高度调整宽度
          Fit In Parent保持比例并完全包含在父物体内(不裁剪)
          Envelope Parent保持比例并覆盖整个父物体(可能裁剪)