UGUI在兩個UI間坐標轉換


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM