var canvasTransform = mainCanvas.GetComponent<RectTransform>();
float minX = canvasTransform.position.x + canvasTransform.rect.xMin;
float maxY = canvasTransform.position.y + canvasTransform.rect.yMax;
float z = canvasTransform.position.z;
Vector3 topLeft = new Vector3(minX, maxY, z);
将给你画布的左上角
编辑:https://docs.unity3d.com/ScriptReference/RectTransform-rect.html
如果你查看Unity的参考,你应该会发现RectTransform.rect是在本地空间而不是世界空间中的。
Vector3[] worldCorners = new Vector3[4];
mainCanvas.GetComponent<RectTransform().GetWorldCorners(worldCorners);
Vector3 topLeft = worldCorners[1];
如果您需要在画布中放置某些内容,可以考虑使用本地坐标(transform.localPosition),并将左上角设置为锚点: