的左上位置获取对象的位置:查找帆布
Vector3 mainCanvasPosition = mainCanvas.GetComponent<RectTransform>().position;
但它返回的对象中心的位置。
的左上位置获取对象的位置:查找帆布
Vector3 mainCanvasPosition = mainCanvas.GetComponent<RectTransform>().position;
但它返回的对象中心的位置。
mainCanvas.GetComponent()。rect.xMin为您提供了在canvas空间中的最小x位置,而不是在世界空间中。因此,如果将xMin添加到画布的x位置,则会在世界空间中获得最小的x画布位置。对y也一样。
所以;
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
如果你看一下统一的参考,你应该看到RectTransform.rect是在局部空间,而不是在世界空间
我的网络有问题,无法回复。至于我的解决方案,你用'TransformPoint'将本地转换为世界空间,这根本不是问题。实际上,我是通过现场视图来测试我的,所以我没有注意到这一点。 – Programmer
你是指屏幕的左上角位置还是画布? – Programmer
@Programmer只是画布(拿着绿色面板) – David