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;
}
相关推荐
程序员南飞38 分钟前
ps aux | grep smart_webrtc这条指令代表什么意思
java·linux·ubuntu·webrtc
弥琉撒到我41 分钟前
微服务swagger解析部署使用全流程
java·微服务·架构·swagger
一颗花生米。2 小时前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式
问道飞鱼2 小时前
Java基础-单例模式的实现
java·开发语言·单例模式
ok!ko5 小时前
设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)
java·设计模式·原型模式
2402_857589366 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰6 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
哎呦没7 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
编程、小哥哥7 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程8 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统