Unity 屏幕坐标鼠位置 Input.mousePosition 转为UI物体的坐标
方式一: 使用 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
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13