查找Unity UI元素的世界空间坐标

use*_*199 2 user-interface unity-game-engine

因此,根据Unity文档,如果锚点在RectTransform的轴心点处接触,则RectTransform.anchoredPosition将返回UI元素的屏幕坐标.但是,如果它们是分开的(在我的情况下位于矩形的角落),它们将为您提供锚点相对于枢轴点的位置.除非您想通过多种分辨率保持UI对象的适当尺寸,并且同时根据该位置定位不同的对象,否则这很棒.

让我们打破这个.我有object1和object2.object1位于(322.5,-600),当锚点在对象的中心(枢轴)相遇时,anchoredPosition返回,而object2的位置就好了.另一方面,一旦我将锚点放置在object1的4个角上,anchoredPosition返回(45.6,-21).多数民众赞成没有好处.我甚至尝试过使用Transform.position然后Camera.WorldToScreenPoint(),但这对于让我达到目标几乎同样重要.

我希望你能帮我找到一种方法来获得这个物体的实际屏幕坐标.如果有人对此主题有任何见解,将不胜感激.

注意:我已经尝试使用RectTranfrom.rect.center并返回(0,0)

我也研究过RectTransformUtility,那些辅助函数完成了所有的下蹲.

Fog*_*zie 5

anchoredPosition返回"此RectTransform的枢轴相对于锚点参考点的位置".它与屏幕坐标或世界空间无关.

如果您正在寻找Unity中UI元素的屏幕坐标,您可以使用rectTransform.TransformPointrectTransform.GetWorldCorners获取Vector3世界空间中您需要的任何内容.你决定参与其中,然后你可以将它们传入Camera.WorldToScreenPoint()