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

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

相关推荐
weixin_423995001 小时前
unity 处理图片:截图,下载,保存
java·unity·游戏引擎
lowhot4 小时前
C语言UI框架
c语言·开发语言·笔记·ui
呆呆敲代码的小Y5 小时前
【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程
游戏·unity·游戏引擎·实战·游戏开发·轮播图·u3d
William_cl6 小时前
ASP.NET Core 视图组件:从入门到避坑,UI 复用的终极方案
后端·ui·asp.net
初级代码游戏6 小时前
云存储的删除设计
ui·删除·交互设计·onedrive·icloud·界面设计
Kang.Charles7 小时前
Lua UI系统框架逻辑详解
ui·lua
Sahadev_7 小时前
从逻辑表达式到原子化构建:复杂 UI 组件的重构之道
ui·重构
示申○言舌7 小时前
Unity高性能参数差异化URP Shader圆角圆环UI进度条
ui·unity·游戏引擎·圆环进度条·参数差异化·材质参数独立·圆角圆环
zhengxianyi5158 小时前
yudao-ui-go-view路由同时支持history及hash
ui·golang·哈希算法
一只一只19 小时前
Unity之协程
unity·游戏引擎·协程·coroutine·startcoroutine