Unity UI坐標的轉(zhuǎn)換

/// <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);
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容