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)
}
相關文章
相關標籤/搜索