gpt4 book ai didi

unity3d - 如何将 RectTransform(UI 面板)转换为屏幕坐标?

转载 作者:行者123 更新时间:2023-12-01 12:44:06 25 4
gpt4 key购买 nike

我想确定 Unity3D 中 RectTransform 的屏幕坐标。考虑到元素可能被 anchor 定甚至缩放,这是如何完成的?

我正在尝试使用 RectTransform.GetWorldCorners 然后将每个 Vector3 转换为屏幕坐标,但值是错误的。

public Rect GetScreenCoordinates(RectTransform uiElement)
{
var worldCorners = new Vector3[4];
uiElement.GetWorldCorners(worldCorners);
var result = new Rect(
worldCorners[0].x,
worldCorners[0].y,
worldCorners[2].x - worldCorners[0].x,
worldCorners[2].y - worldCorners[0].y);
for (int index = 0; index < 4; index++)
result[index] = Camera.main.WorldToScreenPoint(result[index]);
return result;
}

最佳答案

虽然帮助说它返回世界空间中的坐标,但它们实际上在屏幕空间中(至少当 UI 不在世界空间中时)。所以解决方法很简单:

public Rect GetScreenCoordinates(RectTransform uiElement)
{
var worldCorners = new Vector3[4];
uiElement.GetWorldCorners(worldCorners);
var result = new Rect(
worldCorners[0].x,
worldCorners[0].y,
worldCorners[2].x - worldCorners[0].x,
worldCorners[2].y - worldCorners[0].y);
return result;
}

关于unity3d - 如何将 RectTransform(UI 面板)转换为屏幕坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com