/// <summary>
/// 屏幕坐標轉(zhuǎn)換成 UI 坐標
/// </summary>
/// <param name="targetParentRect"> 目標 UI 父物體的 RectTransform </param>
/// <param name="mousePos"> 鼠標位置 </param>
/// <param name="canvasCam"> 如果Canvas的渲染模式為: Screen Space - Overlay, Camera 設置為 null;
/// Screen Space-Camera or World Space, Camera 設置為 Camera.main></param>
/// <returns>UI 的局部坐標</returns>
private Vector2 ScreenToUILocalPos(RectTransform targetParentRect, Vector2 mousePos, Camera canvasCam = null)
{
//UI 的局部坐標
Vector2 uiLocalPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(targetParentRect, mousePos, canvasCam, out uiLocalPos);
return uiLocalPos;
}
使用方法:// targetRect 目標物體,也就是UI物體
targetRect.localPosition = ScreenToUILocalPos(targetRect.parent as RectTransform, Input.mousePosition);
/// <summary>
/// 屏幕坐標轉(zhuǎn)換成 UI 坐標
/// </summary>
/// <param name="targetRect"> 目標 UI 物體的 RectTransform </param>
/// <param name="mousePos"> 鼠標位置 </param>
/// <param name="canvasCam"> 如果Canvas的渲染模式為: Screen Space - Overlay, Camera 設置為 null;
/// Screen Space-Camera or World Space, Camera 設置為 Camera.main></param>
/// <returns> UI 的坐標 </returns>
private Vector3 ScreenToUIWorldPos(RectTransform targetRect, Vector2 mousePos, Camera canvasCam = null)
{
//UI 的局部坐標
Vector3 worldPos;
RectTransformUtility.ScreenPointToWorldPointInRectangle(targetRect, mousePos, canvasCam, out worldPos);
return worldPos;
}
使用方法:targetRect 目標物體,也就是UI物體
targetRect.position = ScreenToUIWorldPos(targetRect, Input.mousePosition);