先上图,这就是anchoredPosition的几何含义==》箭头所代表的向量。
然后解释名词:
绿框:子节点
红框:父节点
轴心:Pivot,上图中的箭头指向的蓝色小圈圈,
锚点区:AnchoredMin和AnchoredMax构成的一个方框,上图中四个白色小三角构成的区域
虚拟轴心:以子节点的pivot参数在锚点区映射出来的点
上代码:
float virtualX = Mathf.Lerp(rect.anchorMin.x, rect.anchorMax.x, rect.pivot.x);
float virtualY = Mathf.Lerp(rect.anchorMin.y, rect.anchorMax.y, rect.pivot.y);
Vector2 virtualPivot = new Vector2(virtualX, virtualY);
Vector2 localPosition2D = new Vector2(rect.localPosition.x, rect.localPosition.y);
Vector2 anchoredPosition = localPosition2D - Vector2.Scale(parent.rect.size, visualPivot - Vector2.one * 0.5f);