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布局和交互问题。
热门推荐
三相不平衡的危害与解决方案
影响色谱分离的因素之——关于流动相不得不了解的基础知识
曦字怎么写:从结构到文化内涵的全面解析
创新IVD产品临床试验方案设计解析
自制手工面条,做一份传统美味(以传承的方式)
流浪动物咬坏小区内车辆,物业公司未尽职责被判赔
2025广州体育中考时间定了!评分标准和计分方式公布
Debian如何防止ARP欺骗攻击
讲再多时间管理,都不如这7条高效原则
当读书遇上AI 开启阅读新时代
身价暴跌的小龙虾,怎么了?
载人航天与空间科学“双向奔赴”
大数据技术在不同领域的应用有哪些?
数据科学导论:从概念到应用的全面解析
左旋肉碱与共轭亚油酸:减脂效果对比与使用建议
Z世代求职三大"苦"位:等到焦虑、拒接来电及难忍官腔 HR如何接招抢人才?
春节拜年习俗的起源与文化内涵
喜炎平注射液的功效与作用及使用说明书
南天竹的种植与护理指南
黄山山顶酒店全攻略:7家酒店特色与推荐
数字孪生智能工厂:从顶层设计到系统集成的完整架构
婚后财产继承房产归谁?一文详解继承规则
腾讯视频限制会员登陆设备数,爱优腾也要打击账号“共享”
21700锂电池参数详解:与18650锂电池的主要区别
辛硫磷能不能叶面喷施?叶面喷施的持效期较短
数字道教:从一到十,40个道教入门名词解释,简单明了,值得收藏
如何编写高质量的软件开发文档范例?
探究曹魏作为三国正统的历史依据,都有什么几个方面的原因?
尿糖体检经历:揭秘正常值与影响因素
5种中药方剂拯救难治贫血,医生都在用!