Unity3d。如何获取ui元素的屏幕或世界位置

时间:2015-04-24 13:17:52

标签: user-interface unity3d

我有UI元素(图像等)。帆布附在相机上。 有RectTransform,但如何将此数据转换为屏幕或世界坐标并获取此图像的中心点?

尝试RectTransform.GetWorldCorners,但它返回零向量。

4 个答案:

答案 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);

将为您提供图像中心的世界坐标。