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

标签 user-interface unity3d

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

让我们分解一下。我有对象 1 和对象 2。 object1 位于 (322.5, -600) 并且当 anchor 在对象 anchoredPosition 的中心(枢轴)处相遇时,就返回该位置,而 object2 的位置恰到好处。另一方面,一旦我将 anchor 放置在 object1 anchoredPosition 的 4 个角上,就会返回 (45.6, -21)。那只是不好。我什至尝试过使用 Transform.position然后 Camera.WorldToScreenPoint() ,但这对让我实现目标几乎起到了同样的作用。

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

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

我也调查过 RectTransformUtility那些辅助函数已经完成了所有的深蹲。

最佳答案

anchoredPosition 返回“此 RectTransform 的枢轴相对于 anchor 引用点的位置。”它与屏幕坐标或世界空间无关。

如果您正在 Unity 中查找 UI 元素的屏幕坐标,您可以使用 rectTransform.TransformPointrectTransform.GetWorldCorners获取任何 Vector3你需要在世界空间。无论您决定使用哪个,您都可以将它们传递给 Camera.WorldToScreenPoint()

关于user-interface - 查找 Unity UI 元素的世界空间坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30103675/

相关文章:

java - 为什么我的 GUI 没有加载到构造函数上?

c++ - 阿拉伯语的布局方向不是根据语言环境确定的(Mac 和 Linux)

c# - Unity 2D 地面碰撞器工作,但 OnTriggerEnter2D 未检测到

c# - Unity VM 崩溃(看起来像是加速问题)

c# - 统一使用 JNI AndroidJNI.GetMethodID 和字符串参数

user-interface - 对话操作

c++ - 向 C++ 软件添加 GUI 的最佳语言

unity3d - Unity UI 图像的软阴影

c# - 切片 3D 模型?

C++ 从主线程调用方法