在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) }