Unity UI系统中RectTransform详解
一、基础代码示例
public GameObject node;
var rect = node.GetComponent<RectTransform>();Debug.Log($"anchoredPosition----{rect.anchoredPosition}");
Debug.Log($"offsetMin.x--{rect.offsetMin}");
Debug.Log($"offsetMax.x--{rect.offsetMax}");
Debug.Log($"rect.sizeDelta----{rect.sizeDelta}");
Debug.Log($"rect.rect----{rect.rect}");
Debug.Log($"rect.anchorMax----{rect.anchorMax}");
Debug.Log($"rect.anchorMin----{rect.anchorMin}");
场景结构
-
Parent 对齐方式
-
节点结构
二、X轴有拉伸的情况
1. 向上对齐
参数面板
- Left: Parent左边(AD)到Child左边(EH)的距离偏移,向右为正,向左为负。
- Right: Parent右边(BC)到Child右边(FG)的距离偏移,向左为正,向右为负。
- PosY: CD边到Child中心点(M)的距离偏移,向上为正,向下为负。
- Height: Child的高度(EH或FG)。
日志输出
anchoredPosition
anchoredPosition----(0.00, -20.00)
表示原点O(AB的中点)到Child中心点M的偏移。
offsetMin
和 offsetMax
offsetMin--(68.00, -70.00)
offsetMax--(-68.00, 30.00)
offsetMin
: 左下角锚点(A)到Child左下角(B)的偏移。offsetMax
: 右上角锚点(D)到Child右上角(C)的偏移。
sizeDelta
rect.sizeDelta----(-136.00, 100.00)
sizeDelta.x
: Child宽度相对Parent的宽度,即sizeDelta.x = -(68 * 2) = -136
sizeDelta.y
: 因Y轴未被拉伸,等于Child高度= 100
rect
rect.rect----(x:-32.00, y:-50.00, width:64.00, height:100.00)
表示Child自身中心(A)到自身左下角(B)的偏移。
anchorMax
和 anchorMin
rect.anchorMax----(1.00, 1.00)
rect.anchorMin----(0.00, 1.00)
anchorMin
: Child左下角锚点坐标。anchorMax
: 右上角锚点坐标。
当锚点发生变化时:
2. 居中对齐
参数面板
日志输出
3. 向下对齐
参数面板
日志输出
三、Y轴有拉伸的情况
1. 向左对齐
参数面板
- PosX: Parent左边(AD)到Child中心点(M)的水平距离偏移,向右为正,向左为负。
- Top: Parent上边(DC)到Child上边(HG)的垂直偏移,向下为正,向上为负。
- Width: Child宽度(HG)。
- Bottom: Parent下边(AB)到Child下边(EF)的垂直偏移,向上为正,向下为负。
日志输出
anchoredPosition
anchoredPosition----(100.00, 30.00)
O为原点(AB的中点),M为Child的中点。
offsetMin
和 offsetMax
offsetMin--(68.00, 30.00)
offsetMax--(132.00, 30.00)
offsetMin
: 左下角锚点(A)到Child左下角(C)的偏移。offsetMax
: 右上角锚点(B)到Child右上角(B)的偏移。
sizeDelta
rect.sizeDelta----(64.00, 0.00)
sizeDelta.x
: Child宽度= 64
sizeDelta.y
: 因X轴未被拉伸,sizeDelta.y = 0
2. 居中对齐
参数面板
日志输出
3. 向右对齐
参数面板
四、XY轴同时拉伸
参数面板
- Left: Parent左边(AD)到Child左边(EH)的距离偏移,向右为正,向左为负。
- Right: Parent右边(BC)到Child右边(FG)的距离偏移,向左为正,向右为负。
- Top: Parent上边(DC)到Child上边(HG)的垂直偏移,向下为正,向上为负。
- Bottom: Parent下边(AB)到Child下边(EF)的垂直偏移,向上为正,向下为负。
日志输出
五、无拉伸的情况(以左下角对齐为例)
参数面板
日志输出
- sizeDelta.x: 等于Child宽度
- sizeDelta.y: 等于Child高度
总结
- anchoredPosition: 表示Child中心点相对于锚点原点的偏移。
- offsetMin / offsetMax: 表示Child与锚点之间的偏移量。
- sizeDelta: 表示Child相对于Parent的尺寸变化。
- rect: 表示Child自身的矩形区域。
- anchorMin / anchorMax: 定义Child的锚点位置。