Unity RectTransform·屏幕坐标转换

RectTransform转屏幕坐标

分两种情况

Canvas渲染模式为Overlay时,使用此方式

cs 复制代码
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时,使用此方式

cs 复制代码
/// <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);
}

屏幕坐标转RectTransfom局部坐标

针对锚点变化暂未测试

cs 复制代码
/// <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;
}
相关推荐
zl97989910 分钟前
SpringBoot-配置文件yaml
java·spring boot·spring
好家伙VCC17 分钟前
**TensorFlow:发散创新的深度学习框架探索**随着人工智
java·人工智能·python·深度学习·tensorflow
豆沙沙包?1 小时前
2025年--Lc194-516. 最长回文子序列(动态规划在字符串的应用,需要二刷)--Java版
java·算法·动态规划
_extraordinary_1 小时前
Java Spring配置
java·开发语言·spring
工业甲酰苯胺1 小时前
Java并发机制的底层实现原理:从CPU到JVM的全面解析
java·jvm·spring
兩尛1 小时前
java八股-操作系统
java·开发语言
码神本神1 小时前
(附源码)基于Springboot的校园失物招领管理系统的设计与实现
java
zzzsde2 小时前
【C++】深入理解string类(5)
java·前端·算法
失散132 小时前
分布式专题——46 ElasticSearch高级查询语法Query DSL实战
java·分布式·elasticsearch·架构