找到画布的左上角位置

时间:2017-05-09 08:33:48

标签: c# canvas unity3d position

获取对象的位置:

Vector3 mainCanvasPosition = mainCanvas.GetComponent<RectTransform>().position;

但它返回对象的中心的位置。

如何获得左上角位置? enter image description here

1 个答案:

答案 0 :(得分:5)

mainCanvas.GetComponent()。rect.xMin为画布空间中的画布提供最小x位置,而不是世界空间。因此,如果将xMin添加到画布的x位置,则在世界空间中获得画布的最小x位置。同样适用于你。

因此;

float minX = mainCanvas.GetComponent<RectTransform>().position.x + mainCanvas.GetComponent<RectTransform>().rect.xMin;
float maxY = mainCanvas.GetComponent<RectTransform>().position.y + mainCanvas.GetComponent<RectTransform>().rect.yMax;
float z = mainCanvas.GetComponent<RectTransform>().position.z;

Vector3 topLeft = new Vector3(minX, maxY, z);

会给你画布的左上角

修改:https://docs.unity3d.com/ScriptReference/RectTransform-rect.html

如果你看看Unity的参考,你应该看到RectTransform.rect在本地空间,而不是在世界空间