获取对象的位置:
Vector3 mainCanvasPosition = mainCanvas.GetComponent<RectTransform>().position;
但它返回对象的中心的位置。
答案 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在本地空间,而不是在世界空间