我有UI元素(图像等)。帆布附在相机上。
有RectTransform
,但如何将此数据转换为屏幕或世界坐标并获取此图像的中心点?
尝试RectTransform.GetWorldCorners
,但它返回零向量。
答案 0 :(得分:12)
yourRectTransform.rect.center
表示当地空间的中心点。
yourRectTransform.TransformPoint
转换为世界空间。
RectTransform.GetWorldCorners
没有按照规定工作,这很奇怪。在Awake之后你需要调用其他一个答案(这样就可以进行布局)。
答案 1 :(得分:2)
您可以使用GetWorldCorners
,但仅限于使用具有真实尺寸的儿童时。对于世界空间画布的孩子,我有合理的价值观。
答案 2 :(得分:2)
我发现GetWorldCorners和TransformPoint只能在Start()上工作,而不是在Awake()上工作,好像我们必须等待内容调整大小
Vector3 min = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.min);
Vector3 max = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.max);
elementToResize.transform.localScale = new Vector3(Mathf.Abs(min.x - max.x) , Mathf.Abs(min.y - max.y), 1f);
elementToResize.transform.position = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.center);
答案 3 :(得分:0)
遵循瓦卡纳查的指导,
Vector2 _centerPosition = _rectTransform.TransformPoint(_rectTransform.rect.center);
将为您提供图像中心的世界坐标。