UGUI在两个UI间坐标转换

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

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

函数定义c#

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

解释:函数

rect:目标界面的节点ui

screenPoint:要转换的节点屏幕坐标,若是worldCamera为空就返回 vector2.zero3d

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

localPoint: 转换后的坐标点orm

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

最后算出来的结果使用: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)
}
相关文章
相关标签/搜索