Unity踩坑之RectTransformUtility.ScreenPointToLocalPointInRectangle

news/2024/9/23 3:22:02/

此方法会将屏幕坐标点转换为UI的本地坐标点,即UI子物体相对于父物体的相对位置。不过值得注意的是:当父物体的锚点不在中心时,可能比较麻烦,因为UI的本地坐标是相对于父物体的锚点来计算的。

RectTransformUtility.ScreenPointToLocalPointInRectangle(parentRectTransform, eventData.position, eventData.pressEventCamera, out localPoint)
  • parentRectTransform:这是要进行坐标转换的RectTransform的父级RectTransform。它定义了坐标转换的参考系。通常,你会将父级RectTransform设置为UI元素所在的Canvas的RectTransform。

  • eventData.position:这是事件数据的屏幕坐标。它表示鼠标或触摸事件发生的位置。

  • eventData.pressEventCamera:这是事件数据的相机。它表示事件发生时使用的相机。对于UI事件,通常使用UI相机(例如Canvas上的UI Camera)。

  • localPoint:这是一个输出参数,用于存储转换后的本地坐标。方法执行后,将通过这个参数返回转换后的坐标值。

假设鼠标点击a物体(都为UI元素,下同),而a物体的父物体为A,如果A相对于Canvas,其锚点在Canvas的中心点,那么使用RectTransformUtility.ScreenPointToLocalPointInRectangle方法,将父物体,鼠标指针位置,渲染Canvas的相机(若为Overly则为null),传入,得到的localPoint就是a的PosX和PosY。但是如果A的锚点不在Canvas的中心,那么得到的localPoint就不会是预期值了。

如果子物体的父物体的锚点不在中心,可以在子物体上再套一个空物体,将空物体的锚点设为父物体的中心,则完美解决。


http://www.ppmy.cn/news/1476468.html

相关文章

C语言 default 踩坑

void fun(char c) {switch(c){case b :cout << "ttt" << endl;break;defualt:cout << "test" <<endl;} }这段代码中&#xff0c;理论上来说&#xff0c;当cb’时应该打印 “ttt”&#xff0c;否则&#xff0c;应该打印 “test”。…

数仓工具—Hive语法之排除特定列

排除特定列 Apache Hive是一个基于Hadoop HDFS的数据仓库框架,用于存储和分析大量数据。Apache Hive支持大多数关系数据库功能,如对大型表进行分区和根据分区列存储值。 在本文中,我们将检查从SELECT查询中排除Hive分区列的方法。 这个在我们需要表中大量列的时候,例如一…

以下不属于清廉金融文化建设推进工作思路的是() A.监管引领B.协会推进C.机构推进D.社会共建

以下不属于清廉金融文化建设推进工作思路的是() 查看完整试题答案 A.监管引领B.协会推进 C.机构推进D.社会共建 以下不属于拒腐防变的五道关口的是&#xff1a;() A.政治关B.权力关 C.交往关D.价值观 对2023年度《上海银行业保险业营业网点“清廉角“建设规范》要求在…

【ELK+Kafka+filebeat分布式日志收集】分布式日志收集详解

分布式日志收集是一种用于在分布式系统中收集、聚合、存储和分析日志数据的技术。随着系统规模的扩大和分布式架构的普及,单节点的日志收集和处理方案已经难以满足需求。因此,分布式日志收集系统应运而生。以下是分布式日志收集的详细讲解: 一、背景 1、为什么需要分布式日…

Pycharm 导入 conda 环境

使用时经常在此处卡壳&#xff0c;在此做个记录。 这个位置选择 conda 安装路径下的 python.exe 文件即可

java导出word实现

参考&#xff1a;Poi-tl Documentation

MAVSDK动态库与静态库及mavsdk_server程序macOS平台编译与安装

1.克隆mavsdk: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译静态库 cmake -Bbuild/default -H. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF 生成makefile 生成成功,开始编译 cmake --build build/default -j8 成功生成libmavsdk.a 开…

Python|OpenCV-实现人物的姿态识别检测以及实时计数(18)

前言 本文是该专栏的第20篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 本文将基于OpenCV以及MediaPipe,来实现视频与摄像头中的人物,进行仰卧起坐的动态检测以及实时计数(本文进行人物的姿态识别,仅以人物的仰卧起坐的动态动作为例)。 具体细节部分以及完…