要获取对象的位置:

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

但它返回对象中心的位置。
我怎样才能得到左上角的位置?
c# - 找到 Canvas 的左上位置-LMLPHP

最佳答案

maincavas.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位于局部空间,而不是世界空间

09-26 03:32