Unity UI坐标说明

测试代码如下

csharp 复制代码
 	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

csharp 复制代码
anchoredPosition----(0.00, -20.00)

anchoredPosition表原点O到Child中心点M的偏移

原点O为AB的中点

3 offsetMin and offsetMax

csharp 复制代码
offsetMin--(68.00, -70.00)
offsetMax--(-68.00, 30.00)

offsetMin表示左下角锚点(A)到Child左下角(B)的偏移

offsetMin表示右上角锚点(D)到Child右上角(C)的偏移

4 sizeDelta

csharp 复制代码
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

csharp 复制代码
rect.rect----(x:-32.00, y:-50.00, width:64.00, height:100.00)

rect表示Child自身中心(A)到自身左下角(B)的偏移

6 anchorMax and anchorMin

csharp 复制代码
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

csharp 复制代码
anchoredPosition----(100.00, 30.00)

其中O为原点,是AB的中点,M为Child的中点

3 offsetMin and offsetMax

csharp 复制代码
offsetMin--(68.00, 30.00)
offsetMax--(132.00, 30.00)

offsetMin表示左下角锚点(A)到Child左下角(C)的偏移

offsetMin表示右上角锚点(B)到Child右上角(B)的偏移

4 sizeDelta

csharp 复制代码
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

csharp 复制代码
rect.rect----(x:-32.00, y:-50.00, width:64.00, height:100.00)

和之前的对齐方式相同,没有变化

6 anchorMax and anchorMin

csharp 复制代码
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

其他参数原理和之前的对齐方式相同

相关推荐
Cx330❀1 天前
Qt 常用控件属性与底层机制详解:从窗口半透明、浮点数陷阱到 QSS 与焦点策略
qt·ui·图形渲染
小小数媒成员1 天前
UGUI 性能优化(详细,全,深入)
开发语言·unity·游戏引擎
Cx330❀1 天前
Qt 常用 UI 控件详解:从QPushButton到QLabel 核心用法解析
qt·ui·图形渲染
传奇开心果编程2 天前
【ArkUI 练中学】第15课:UI 界面设计与实战
学习·ui·华为·harmonyos
HwJack202 天前
【HarmonyOS开发小实践】ArkUI 动画系统属性动画、显式动画与路径动画
ui·性能优化·harmonyos
林川~012 天前
Unity新输入系统使用笔记
unity·input system
传奇开心果编程2 天前
【Flutter入门练中学】第2课:布局系统
学习·flutter·ui
传奇开心果编程2 天前
【Jetpack Compose基础语法学与练】第8课 rememberSaveable,页面旋转/系统重建保留状态
android·学习·ui·kotlin·android jetpack
xy34532 天前
Axure 9.0 中继器核心结构
前端·ui·html·axure·原型·产品设计
传奇开心果编程2 天前
【Jetpack Compose基础语法学与练】第7课 if条件渲染 + 列表基础(LazyColumn)
学习·ui·kotlin·android jetpack