Unity RectTransform屏幕坐标转换详解
创作时间:
作者:
@小白创作中心
Unity RectTransform屏幕坐标转换详解
引用
CSDN
1.
https://blog.csdn.net/qq_35030499/article/details/136389143
在Unity开发中,RectTransform的屏幕坐标转换是一个常见的需求,特别是在处理UI布局和交互时。本文将详细介绍RectTransform转屏幕坐标和屏幕坐标转RectTransform局部坐标的两种情况,并提供相应的代码实现。
RectTransform转屏幕坐标
Canvas渲染模式为Overlay时
当Canvas的渲染模式为Overlay时,可以使用以下方法将RectTransform转换为屏幕坐标:
public Rect GetScreenCoordinatesOfCorners(RectTransform rt)
{
var worldCorners = new Vector3[4];
rt.GetWorldCorners(worldCorners);
var result = new Rect(
worldCorners[0].x,
worldCorners[0].y,
worldCorners[2].x - worldCorners[0].x,
worldCorners[2].y - worldCorners[0].y);
return result;
}
/// <summary>
/// RectTransform转屏幕坐标
/// </summary>
/// <param name="rt"></param>
/// <returns></returns>
public Vector2 RectTransformToScreenPoint(RectTransform rt)
{
Rect screenRect = GetScreenCoordinatesOfCorners(rt);
return new Vector2(screenRect.center.x, screenRect.center.y);
}
Canvas渲染模式为Camera时
当Canvas的渲染模式为Camera时,可以使用以下方法将RectTransform转换为屏幕坐标:
/// <summary>
/// RectTransform转屏幕坐标
/// </summary>
/// <param name="rt"></param>
/// <param name="uiCamera"></param>
/// <returns></returns>
public Vector2 GetScreenPoint(RectTransform rt,Camera uiCamera)
{
return uiCamera.WorldToScreenPoint(rt.position);
}
屏幕坐标转RectTransform局部坐标
对于屏幕坐标转换为RectTransform局部坐标,可以使用以下方法:
/// <summary>
/// 屏幕坐标转局部坐标
/// </summary>
/// <param name="screenPoint"></param>
/// <param name="parent"></param>
/// <param name="UICamera"></param>
/// <returns></returns>
public Vector2 ScreenPointToRectTransform(Vector2 screenPoint, RectTransform parent,Camera UICamera)
{
Vector2 LocalPoint = Vector2.zero;
RectTransformUtility.ScreenPointToLocalPointInRectangle(RT, screenPoint, UICamera, out LocalPoint);
return LocalPoint;
}
需要注意的是,这种方法针对锚点变化暂未测试,使用时需谨慎。
通过以上方法,开发者可以轻松实现RectTransform与屏幕坐标之间的转换,从而更好地处理UI布局和交互问题。
热门推荐
2025 年网络安全趋势洞察:多维度的挑战与应对之策
蜀汉街亭之战:一场改变三国格局的战役
生物柴油前景广阔但道路曲折
游戏"肝"现象深度解析:不同类型及其影响
甘特图软件选择:功能对比与最佳实践
如何正确改装四驱车?改装过程中有哪些关键步骤?
什么是新生儿先心病筛查?宝宝定期体检很重要
分析地产问题的三个视角
德安德烈·艾顿:状元郎的迷失与觉醒——天赋满满的他还能否再度崛起?
如何认定首套房?标准与证明开具流程全解析
开车撞到动物能不能直接走,该怎么处理
噬菌体在食品保护中的应用和挑战
超级电容器的电极材料主要是什么?
个人征信异议申诉指南:线上线下载体申请方法详解
2024LPL春季赛战报:速龙战术见效显著 AL先下一城
《亚瑟教学出装攻略大全》(亚瑟出装攻略、技能使用及战术指南一网打尽)
像素越高,拍照效果越好?深入解析摄影真相
数字时代情报学发展展望:在数字环境下实现知识的组织和利用
广州520公里山海骑行道全线贯通,8条特色路线任你选
孕妇营养必须知道
医生提醒:孩子长高这几件事很重要
仲裁协议效力扩张的典型情形
粤菜技艺进瑶乡,赋能瑶菜新活力
国产游戏行业的挑战与机遇:技术创新引领未来
502胶水的特性、使用方法及注意事项
外星人之谜:科学幻想下的宇宙探索
福柯:学习的异化
中医穴位按摩缓解鼻塞:五大要穴详解与调理方案
无人机革新电影制作:如何提升视觉叙事与观众体验
必看10部高分治愈系电影,带你走出至暗时刻,拥抱未来