Unity UI坐标说明
测试代码如下
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.向上对齐
1.参数面板
Left 表示Parent左边(AD)到Child左边(EH)的距离偏移,向右为正,向左为负
Right 表示Parent右边(BC)到Child右边(FG)的距离偏移,向左为正,向右为负
PosY表示CD边到Child的中心点(M)的距离偏移,向上为正,向下为负
Height表示Child的高度,EH或者FG的边长
日志输出如下
2 anchoredPosition
anchoredPosition----(0.00, -20.00)
anchoredPosition表原点O到Child中心点M的偏移
原点O为AB的中点
3 offsetMin and offsetMax
offsetMin--(68.00, -70.00)
offsetMax--(-68.00, 30.00)
offsetMin表示左下角锚点(A)到Child左下角(B)的偏移
offsetMin表示右上角锚点(D)到Child右上角(C)的偏移
4 sizeDelta
rect.sizeDelta----(-136.00, 100.00)
sizeDelta.x 为 Child的宽度相对Parent的宽度 ,即AB + sizeDelta.x = CD,所以sizeDelta.x = -(68x2) = -136
因为对齐方式Y轴没有被拉伸,所以sizeDelta.y = Child的Height = 100;
5 rect
rect.rect----(x:-32.00, y:-50.00, width:64.00, height:100.00)
rect表示Child自身中心(A)到自身左下角(B)的偏移
6 anchorMax and anchorMin
rect.anchorMax----(1.00, 1.00)
rect.anchorMin----(0.00, 1.00)
anchorMin代表Child左下角锚点坐标 ,anchorMax代表右上角锚点坐标
当如下情况时
其他拉伸的方式同理,只是锚点不同
2、居中对齐
1.参数面板
日志输出如下
其他参数原理同理
3、向下对齐
1.参数面板
输出日志
其他参数同理
二、Y轴有拉伸的情况
1.向左对齐
1.参数面板
-
PosX 表示Parent的左边(AD)到Child中心点(M)的水平距离偏移,向右为正,向左为负
-
Top表示Parent的上边(DC)到Child的上边(HG)到的垂直偏移,向下为正,向上为负,
-
Width 表示Child的宽度(HG)的长度
-
Bottom表示Parent的下边(AB)Child的下边(EF)的垂直偏移,向上为正,向下为负
日志如下
2 anchoredPosition
anchoredPosition----(100.00, 30.00)
其中O为原点,是AB的中点,M为Child的中点
3 offsetMin and offsetMax
offsetMin--(68.00, 30.00)
offsetMax--(132.00, 30.00)
offsetMin表示左下角锚点(A)到Child左下角(C)的偏移
offsetMin表示右上角锚点(B)到Child右上角(B)的偏移
4 sizeDelta
rect.sizeDelta----(64.00, 0.00)
因为对齐方式X轴没有被拉伸,所以sizeDelta.x = Child的width = 64;
sizeDelta.y 为 Child的高度相对Parent的高度 ,即AB + sizeDelta.y = CE,所以sizeDelta.y = 0;
5 rect
rect.rect----(x:-32.00, y:-50.00, width:64.00, height:100.00)
和之前的对齐方式相同,没有变化
6 anchorMax and anchorMin
rect.anchorMax----(1.00, 1.00)
rect.anchorMin----(0.00, 1.00)
和之前的对齐方式相同,没有变化
2.居中对齐
1.参数面板
输出日志
其他参数同理
3、向右对齐
1.参数面板
三、XY轴有拉伸的情况
1.参数面板
Left 表示Parent左边(AD)到Child左边(EH)的距离偏移,向右为正,向左为负
Right 表示Parent右边(BC)到Child右边(FG)的距离偏移,向左为正,向右为负
Top表示Parent的上边(DC)到Child的上边(HG)到的垂直偏移,向下为正,向上为负,
Bottom表示Parent的下边(AB)Child的下边(EF)的垂直偏移,向上为正,向下为负
日志如下
其他参数和之前的对齐方式同理
四、无拉伸的情况
以左下角对齐方式为例
1.参数面板
输出日志
无拉伸的情况下
sizeDelta.x = width
sizeDelta.y = height
其他参数原理和之前的对齐方式相同