UGUI在两个UI间坐标转换

匿名 (未验证) 提交于 2019-12-03 00:14:01

在UGUI中,在两个Canvas之间进行坐标转换,从CanvasA下的坐标转换到CanvasB下。

或者在同一个界面下,从不同的节点下,转成相同的坐标。

函数定义

public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint);

解释:

rect:目标界面的节点

screenPoint:要转换的节点屏幕坐标,如果worldCamera为空就返回 vector2.zero

cam:目标界面的camera,如果 Canvas 的模式为Screen Space - Overlay mode, the cam parameter should be null.

localPoint: 转换后的坐标点

返回值:判断此点是否在Rect所在的平面上

最后算出来的结果使用:rectTransform.anchoredPosition = localPoint

要转的节点屏幕坐标

var screenPoint = canvas.worldCamera.WorldToScreenpoint(obj.transform.position)

通过查看ugui的Slider(滑块)源码

void UpdateDrag(PointerEventData eventData ,Camera cam) {   RectTransformUtility.ScreenPointToLocalPointInRectangle(clickRect,eventData.position,cam,out localcursor) }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!