资讯动态

Rect Transform​

发布时间:2026/10/24 5:37:33 来源:尧图企业网站定制
目录Anchor Presets锚点预设面板Anchors锚点Min X 0 / Y 1Max X 0 / Y 1模式一点锚模式二双轴全拉伸X、Y 都拉开模式三混合一个轴点锚、一个轴拉伸模式四任意比例锚Pivot轴心0.5, 0.5Pos X 752.3 / Pos Y -395 / Pos Z 0Width 500 / Height 280Rotation 0,0,0 与 Scale 1,1,1什么叫做锚框疑问锚框的两个作用Pivot 和锚点有关系吗混合模式 比例锚的一个叠加案例第 0 步Rect Transform 只在回答两个问题第 1 步锚框 你在父物体上圈一块地第 2 步为什么圈出一条线也有用第 3 步只看 X 轴现在把 Y 完全忘掉第 4 步只看 Y 轴现在把 X 完全忘掉第 5 步父物体变高会怎样第 6 步Pivot 在这里管什么什么时候 Pivot Y 才会真正影响布局数字sizeDelta 的陷阱拉伸模式下必踩API 对照速查Rect Transform 的所有数值全都是相对于父物体算的没有一个是绝对屏幕坐标。​ 这是 UI 布局和普通 3D Transform 最大的区别。Anchor Presets锚点预设面板点锚不含 stretch 的 9 格四个锚点重合在一个点上 → Inspector 显示Pos X / Pos Y / Width / Height。无论父物体怎么变子物体元素大小不变只保持相对那个点的偏移。做固定尺寸的按钮、图标、格子就用这个。拉伸锚只要横或纵带一个 stretch锚点在该方向上被拉开成了线段 → 那两个方向的字段就变成Left / Right或Top / Bottom含义是元素这条边距离父物体对应边的间距。父物体变大元素跟着被拉大。做全屏背景、顶栏血条、铺满面板的内容区就用这个。Shift: Also set pivot​ ——按住 Shift 点击除了设锚点还把Pivot​ 挪到和锚点相同的位置。比如 Shift 点左上角Pivot 就变成 (0, 1)。旋转、缩放、以及 Pos 的度量原点都会跟着变。Alt: Also set position​ ——按住 Alt 点击除了设锚点还会把元素当前的位置/尺寸重新换算让它在屏幕上的视觉位置和大小保持不变。这是最实用的一个你想把元素从贴左上角改成贴右下角但不想让它乱跑就 Alt 点击右下角那格。Anchors锚点Min X 0 / Y 1Max X 0 / Y 1锚点不是只有点这一种按 Min/Max 是否重合分两大类再因为 X 轴和 Y 轴独立判断实际能组合出三种显示形态。而且 Min/Max 还能填任意小数不只是 0 / 0.5 / 1Unity 是逐轴判断的规则就两条条件该轴显示anchorMin.x anchorMax.xPos X Width​anchorMin.x ! anchorMax.xLeft Right​anchorMin.y anchorMax.yPos Y Height​anchorMin.y ! anchorMax.yTop Bottom​模式一点锚四个锚点挤在一个点显示Pos X / Pos Y / Width / Height尺寸写死父物体变形时元素只平移、不变形。模式二双轴全拉伸X、Y 都拉开显示Left / Right / Top / Bottom这四个值是元素每条边距离父物体对应边多少像素。全设 0 就是完全填满。父物体变大元素四个方向同时被拉开。做全屏背景、遮罩、铺满面板的内容区。模式三混合一个轴点锚、一个轴拉伸这是最有用但最常被忽略的一种九宫格里带一个 stretch 的 8 个格子都是它。显示Pos X Width Top Bottom或反过来 Left Right Pos Y Height。行为父物体变高 → 子元素跟着变高父物体变宽 → 子元素宽度不变只是横向平移。模式四任意比例锚Min/Max不必是 0、0.5、1Inspector 里可以直接手输任意 0~1 的小数。只要不相等就算拉伸但增长不是 1:1 的Pivot轴心0.5, 0.5Pivot 是这个物体自身的原点取值 0~1 是自身矩形内的归一化坐标。(0.5, 0.5) 正中心也就是旋转、缩放都以中心为支点更重要的是Pos X / Pos Y 测量的正是 Pivot 点相对于锚点的偏移。Pos X 752.3 / Pos Y -395 / Pos Z 0这三个值对应脚本里的anchoredPositionPos X 752.3Pivot中心在锚点父物体左上角右边​ 752.3 像素。Pos Y -395Pivot 在锚点下方​ 395 像素Y 轴向上为正所以向下是负数。Pos Z 0localPosition.zUI 里基本不用。它不影响排序和遮挡层级由 Hierarchy 顺序 / Sorting Order 决定只有在 World Space Canvas、或者要做 3D 翻转、写自定义 shader 时才会有实际意义。Width 500 / Height 280对应脚本里的sizeDelta即元素自身的宽高单位是 UI 像素受 Canvas Scaler 缩放影响不一定是屏幕物理像素。点锚模式下 sizeDelta 就等于实际尺寸不会随父物体缩放。Rotation 0,0,0 与 Scale 1,1,1Rotation绕自身 Z 轴旋转UI 常用的就这一个轴以 Pivot 为中心。改它不会触发 Layout 重建只是重新计算顶点。Scale以 Pivot 为中心的缩放会影响自身及所有子物体同样不触发布局重建。什么叫做锚框疑问锚框anchor box / anchor rect就是anchorMin和anchorMax这两个点在父矩形里撑出来的那个矩形。它是 Rect Transform 里所有间距计算的参照区域——所有 Left / Right / Top / Bottom 量的都是元素边框 与锚框​ 之间的距离不是与父物体边缘的距离。它长什么样anchorMin是左下角anchorMax是右上角两点撑出一个矩形父物体 1000 × 600anchorMin(0.2, 0.1)anchorMax(0.8, 0.9)点锚时锚框退化成一个点锚框永远存在只是可能没有面积本质是同一件事锚框状态该轴显示因为宽 0点Pos X Width参照物是点说位置尺寸更自然宽 0框Left Right参照物是框说离两条边各多远更自然锚框的两个作用作用一定义间距从哪量起父 1000 × 600锚框 (0,0)~(1,1)Left Right 20父 1000 × 600锚框 (0.2,0)~(0.8,1)Left Right 20尺寸不是简单父宽 − 间距的原因间距是从锚框边量起的锚框本身只占父物体的 60%。// 通用公式实际宽度 (anchorMax.x − anchorMin.x) × 父宽 − Left − Right实际高度 (anchorMax.y − anchorMin.y) × 父高 − Top − Bottom作用二定义跟着父物体缩放的比例锚框的相对宽度​(anchorMax.x − anchorMin.x)就是跟随系数我叫它spanspan.x父宽 100 时子元素宽度0点锚不变0.6601全拉伸100Pivot 和锚点有关系吗数值由谁决定Anchors Min/Max(0, 1)锚点参照系原点在父物体身上Pivot(0, 0)Pivot原点在子元素自己身上锚点是外的参照系父矩形里的一个归一化位置 0~1Pivot 是内的参照系自身矩形里的一个归一化位置 0~1。你随便改任何一个另一个的数值都不会动、也不会变灰。但有一个唯一的交集点锚模式下Pos X / Pos Y 的测量终点就是 Pivot。Pos X / Pos Y 量的不是「锚点 → 子元素左边」Pos X / Pos Y 量的是「锚点 → Pivot 点」锚点在上边缘 → Pos Y 要填负数才能进到父物体里面。说了什么四个小三角全部挤在左上角​ → 锚点是点锚位置 left topleft / top​ 字样就是 Unity 在告诉当前子物体相对于父物体的对齐方式水平靠左、垂直靠上预览图三角在左上 ←→ Anchors Min (0,1) / Max (0,1)预览图三角在正中 ←→ Anchors Min (0.5,0.5) / Max (0.5,0.5)预览图四角拉开 ←→ Min (0,0) / Max (1,1)改预览图 → Anchors 数值变改 Anchors 数值 → 预览图变。永远同步。混合模式 比例锚的一个叠加案例先判断这是哪种模式Unity 逐轴判断你这两个轴的结论不一样轴Anchors判断显示XMin X 1Max X 1​相等 → 点锚Pos X Width​YMin Y 0.5Max Y 1​不等 → 拉伸Top Bottom​第 0 步Rect Transform 只在回答两个问题忘掉所有公式它其实就两步我在父物体上认领哪块地​ ← 这是 Anchors锚框我在这块地里怎么摆​ ← 这是 Pos/Width 或 Top/Bottom第 1 步锚框 你在父物体上圈一块地Min和Max是两个对角点圈出来的矩形就是锚框。假设父物体 1000 × 900Min (1, 0.5) → x 1×1000 1000 y 0.5×900 450Max (1, 1) → x 1×1000 1000 y 1×900 900圈出来是什么看这两个点x1000 → 1000完全一样圈不出宽度y300 → 600圈出了 300px 高所以圈出来的是一条竖线不是一个面第 2 步为什么圈出一条线也有用因为两个轴的需求不一样X 轴我想宽度固定 200不需要地只需要一个钉子钉住位置 → 所以 x 圈成点宽度 0刚好Y 轴我想高度跟着父物体变需要地来撑开自己 → 所以 y 圈出 300px 的地锚框在哪个轴上有宽度哪个轴就是拉伸模式。​ 这就是 Unity 逐轴判断的全部逻辑。第 3 步只看 X 轴现在把 Y 完全忘掉因为 x 是点Min Max 1所以 X 轴是点锚Inspector 给你两个框Pos X 从那条线量到我的 PivotPivot X 0.5也就是量到我的水平中心。Width 我自己多宽你填了 200写死假设 Pos X −150负号 向左算一下中心 1000 (−150) 850左边 850 − 100 750 100 半个宽度右边 850 100 950结论宽度永远 200父物体变宽也不变。第 4 步只看 Y 轴现在把 X 完全忘掉纵向锚框是从y450​ 到y900​ 这 300px。因为 y 是有长度的0.5 ≠ 1所以 Y 轴是拉伸Inspector 给你两个框Top 从锚框【上边】(y900) 往下量到我的上边缘Bottom 从锚框【下边】(y450) 往上量到我的下边缘设 Top 50、Bottom 20最关键的一点Bottom 不是离父底边多远是离锚框下边y300多远。所以高度是900-450-50-20380不是900−50-20830。因为锚框只占了 900~450 这一段不是整个父物体高度第 5 步父物体变高会怎样父物体从 900 涨到 1200锚框跟着重算原来y 从 450 到 900 锚框高 450现在y 从 600 到 1200 锚框高 600Top 和 Bottom不变还是 50 和 20原来变高为什么只涨一半​ 因为锚框只占父物体高度的0.5从 0.5 到 1。这就是比例锚——锚框占多少比例元素就按多少比例跟随。第 6 步Pivot 在这里管什么场景Pivot Y 0 vs 0.5有没有差别布局Top / Bottom / 元素位置 / 高度没用​一个数都不变缩放Scale有用​往哪边长不一样旋转Rotation有用​绕哪儿转不一样Pivot Y 0父物体高900 1200Pivot Y 0.5父物体高900 1200Top / Bottom 不受Pivot的影响拉伸模式下Top / Bottom 量的是「边 到 边」Top 锚框上边(y600) → 元素上边缘Bottom 锚框下边(y300) → 元素下边缘量的是两条边之间的距离。而 Pivot 是元素内部的一个点。边没动距离就不动。​ 你在房间里站中间还是站墙角外墙到地界的距离都不变。唯一变化的就是 Pivot 那个点自己在元素内部的位置。什么时候 Pivot Y 才会真正影响布局数字只有 Y 轴是点锚时。把Anchors Min Y改成 1和 Max Y 相等面板会从Top / Bottom变成Pos Y / Height——这时候 Pivot Y 才有影响sizeDelta 的陷阱拉伸模式下必踩脚本里rectTransform.sizeDelta的语义随模式变化模式sizeDelta 含义点锚就是(Width, Height)直觉正确拉伸是-(LeftRight, TopBottom)完全反直觉跨模式安全写法// 改实际尺寸两种模式都正确rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 500);// 拉伸模式下改边距用这个rt.offsetMin new Vector2(left, bottom); // 左下角偏移rt.offsetMax new Vector2(-right, -top); // 右上角偏移注意负号// 只想读当前真实宽高用这个永远是实际像素float w rt.rect.width;API 对照速查Inspector 字段脚本属性Anchors Min/MaxanchorMin/anchorMaxPos X / Pos YanchoredPositionWidth / HeightsizeDelta仅点锚时Left / BottomoffsetMinRight / Top负的offsetMaxPivotpivot拉伸模式下anchoredPosition依然能读写只是它的参考点变成了Pivot 在 anchorMin→anchorMax 这个线段上按比例插值出来的位置不再是一个固定角所以数值看着会飘。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑