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

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

相关推荐
在路上看风景6 小时前
31. Unity 异步加载的底层细节
unity
天人合一peng7 小时前
Unity中做表头时像work中整个调整宽窄
unity
会一点设计8 小时前
6个优质春节海报模板网站推荐!轻松设计马年祝福海报
ui·ux
hudawei99618 小时前
TweenAnimationBuilder和AnimatedBuilder两种动画的比较
flutter·ui·动画·tweenanimation·animatedbuilder
依米阳光0819 小时前
Playwright MCP AI实现自动化UI测试
ui·自动化·playwright·mcp
小李也疯狂19 小时前
Unity 中的立方体贴图(Cubemaps)
unity·游戏引擎·贴图·cubemap
牛掰是怎么形成的19 小时前
Unity材质贴图引用陷阱:包体暴涨真相
unity·材质·贴图
呆呆敲代码的小Y19 小时前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
EQ-雪梨蛋花汤19 小时前
【Unity优化】Unity多场景加载优化与资源释放完整指南:解决Additive加载卡顿、预热、卸载与内存释放问题
unity·游戏引擎
我的offer在哪里20 小时前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎