UGUI UI元素的position和localPosition

Transform有position和localPosition属性,这两个分别代表在世界空间的绝对位置和相对于父级物体的相对位置,RectTransform也一样,对于下图中的红色Image,Canvas的分辨率为1125x2436

1. 锚点聚拢且和轴点都在中心点

在这里插入图片描述
在这里插入图片描述

打印其position和localPosition属性
在这里插入图片描述
输出
在这里插入图片描述
分析其原因
因为在当前Canvas为overlay模式的情况下,position就是屏幕坐标,所以坐标系原点在Canvas左下角
而对于localPosition,是相对于父亲的坐标,当前这张Image的父亲是Canvas,而Canvas的中心点和Image重合,所以是(0,0,0)

2. 锚点聚拢在中心,轴点不在

在这里插入图片描述

在这里插入图片描述
输出
在这里插入图片描述

从这里可以看出,X,Y都减去了50,即Image的宽度的一半,说明 这两个坐标的最终计算看的是元素Pivot所在的位置

3. 锚点分开,轴点在中心

在这里插入图片描述
在这里插入图片描述

输出
在这里插入图片描述
和锚点聚拢时的情况一样

4. 锚点分开,轴点不在中心

在这里插入图片描述
在这里插入图片描述

输出
在这里插入图片描述

发现此时的输出和锚点聚拢时不一样,原因在于当在锚点切换面板将锚点从聚拢在中心切换到四角分散时,Image的宽度被改变成了101,即1125 - 512(Left) - 512(Right)=101,打印此时的rect.width也可以发现
在这里插入图片描述
在这里插入图片描述
说明此时Image被自动拉伸了
将Left和Right改回正确的值
在这里插入图片描述
输出
在这里插入图片描述
依旧保持一致

5. 父物体是其他UI元素的情况下

在这里插入图片描述
在这里插入图片描述
此时白色的是父物体,且其Pivot在左下角
在这里插入图片描述
在这里插入图片描述
子物体的Pivot依旧在中心
切换到Debug模式下查看
在这里插入图片描述
发现子物体的localposition是(250, 250),刚好是父物体的宽 + 子物体宽的一半,即200 + 50
将父物体的Pivot移动到中心
在这里插入图片描述
在这里插入图片描述
发现此时子物体的localposition变成了(150, 150),说明此时子物体的localposition是以父物体的Pivot为原点的

5. 总结

综上所述,在Canvas为Overlay模式(在其他模式下也一样)下,position是以屏幕左下角为原点,到元素Pivot的向量
在这里插入图片描述

localposition是以父物体的中心为原点,(如果父物体是另外一个UI元素,那么中心就是父物体的Pivot)到元素Pivot的向量
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值