• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Unity 屏幕坐标鼠位置 Input.mousePosition 转为UI物体的坐标

武飞扬头像
YrainyJi
帮助1

方式一: 使用 RectTransformUtility.ScreenPointToLocalPointInRectangle

	/// <summary>
    /// 屏幕坐标转换成 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);

方式二: 使用 RectTransformUtility.ScreenPointToWorldPointInRectangle

/// <summary>
    /// 屏幕坐标转换成 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);

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgikbjg
系列文章
更多 icon
同类精品
更多 icon
继续加载