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;
}
相关推荐
Despacito100612 小时前
Java后端性能探查工具速查表
java·开发语言
蓝桉柒712 小时前
下载idea,用idea输入一个程序
java·ide·intellij-idea
蓝桉柒713 小时前
java字面量,变量
java
典典分享指南13 小时前
一品牌多产品线的 GEO 内容矩阵:从策略到落地
java·c#·bash·symfony
用户0942485680313 小时前
第3章:OpenJDK从源码到字节码——Class 文件与 javac 管线
java·jvm
azhou的代码园14 小时前
基于RFM模型的中小型企业客户管理系统
java·人工智能·spring boot·毕业设计
君顾114 小时前
酒吧点餐小程序系统开发实战:从架构设计到上线全流程指南
java·开发语言·酒吧
子非鱼a14 小时前
【WEB】[SWPU2019]Web1
java·服务器·前端
花生了什么事o14 小时前
自定义Spring Boot Starter全流程
java·spring boot·后端
torpidcat15 小时前
ruoyi-vue-pro 若依芋道 java springboot +mybatis 生日查询相关
java·vue.js·spring boot