一直有疑问,在Canvas为Overlay模式锚点分散的情况下的anchoredPosition是怎么计算的
根据资料(其实是DeepSeek),有这么一个公式
参考点X = anchorMin.X + (anchorMax.X - anchorMin.X) × Pivot.X
参考点Y = anchorMin.Y + (anchorMax.Y - anchorMin.Y) × Pivot.Y
这个参考点是一个比例系数,将作为AnchoredPosition的坐标系原点,且是基于父物体的长宽来计算
接下来进行验证
Canvas的分辨率是1125x2436
test的父物体是Canvas
此时Pivot是(1,0.5)
此时的anchoredPosition是(0, 0)
代入上面的公式计算
参考点X = 0 + (1 - 0) * 1 = 1
参考点Y = 0 + (1 - 0) * 0.5 = 0.5
即参考点 = (1, 0.5)
再代入Canvas的长宽计算,即1125 * 1=1125,2436 * 0.5 = 1218,即对于父物体,以父物体的左下角为原点,计算出来的参考点(1125, 1218)在这个位置
再看元素的Left和Top值
Image的边长是100,那么1025 + 100 = 1125,1168 + 50 = 1218
刚好,Pivot也在这个位置,根据anchoredPosition的定义描述,是从Anchor到Pivot的向量,而此时锚点是四处分散的,而此时anchoredPosition也正好是(0, 0),说明上面的公式计算出来的anchoredPosition原点是正确的