发布网友 发布时间:2024-10-04 14:44
共1个回答
热心网友 时间:2024-12-03 01:55
在开始坐标转换之前,先了解一下Canvas的三种渲染模式:Screen Space - Overlay、Screen Space - Camera和World Space。
Screen Space - Overlay模式中的UI位于屏幕顶部,所有2D和3D对象在其下方。例如,当你在Canvas中心添加一个Image,其localPosition代表其相对于父物体的位置,而targetRectTransform.position则表示屏幕位置,而非世界位置。
在Screen Space - Camera模式中,全屏覆盖的Canvas允许UI被世界物体遮盖。如果添加一个2D精灵,由于其Order in Layer值高于UI,会覆盖UI。这时,targetRectTransform.position代表的是世界坐标。
World Space模式的Canvas不会全屏覆盖,通常需要调整并放置到场景中。targetRectTransform.position同样表示世界位置。
World转Screen坐标使用Camera.main.WorldToScreenPoint(worldPos);屏幕转World则用Camera.main.ScreenToWorldPoint(screenPos);ScreenPointToWorldPointInRectangle和ScreenPointToLocalPointInRectangle分别处理屏幕到世界和屏幕到局部坐标转换。
TransformPoint和InverseTransformPoint则是用于局部空间和世界空间的转换,以Screen Space - Overlay模式下的Image为例,其他情况类似。
当设置anchoredPosition时,可以看到它反映了在屏幕空间中的锚定位置,这对于理解和调整UI在屏幕上的位置很有帮助。
以上内容提供了基本的坐标转换概念和方法,具体应用时需要根据场景进行调整。如有任何疑问,欢迎共同探讨。