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

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

相关推荐
程序员Ctrl喵1 小时前
UI 构建系统 —— “万物皆 Widget”的哲学
ui
我的offer在哪里2 小时前
腾讯 Ardot 深度博客:AI 重构 UI/UX 全链路,从 “描述即界面” 到设计工业化的腾讯范式
人工智能·ui·重构
WarPigs2 小时前
编辑器/AB包资源校验工具
unity
呆呆敲代码的小Y3 小时前
Unity+AI 用一句话制作完整小游戏:飞翔的牛马【AI纯添加-0手工代码】
人工智能·游戏·unity·游戏引擎·游戏制作·unityai·一句话制作游戏
wuyaolong0073 小时前
Git误操作急救手册大纲
ui·github
mxwin15 小时前
Unity Shader FLOWMAP岩浆流动制作案例
unity·游戏引擎·shader·uv
小贺儿开发15 小时前
【Arduino与Unity交互探究】01 摇杆模块
科技·unity·游戏引擎·arduino·串口通信·摇杆·硬件交互
Yasin Chen17 小时前
Unity TMP_SDF 分析(三)顶点着色器1
unity·游戏引擎·着色器
mxwin18 小时前
Unity Shader 使用 Noise 图 制作Shader 溶解效果
unity·游戏引擎
新缸中之脑20 小时前
Unsloth Studio:LLM微调UI
ui