UGUI Canvas为Overlay模式下的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. 总结
综上所述,在Canvas为Overlay模式下,position是以屏幕左下角为原点,到元素Pivot的向量
localposition是以父物体的中心为原点,到元素Pivot的向量