Unity判断鼠标是否在ui的Recttransform内的源码

Posted avi9111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity判断鼠标是否在ui的Recttransform内的源码相关的知识,希望对你有一定的参考价值。

记录判断鼠标点击是否在某个窗口内的方案。

碰到一个需求,界面有两层,后面层的模型由3Dcamera照着,前面层的窗口由2DCamera显示,但是当窗口区域遮挡住3D区域的时候,3D区域依然可以响应鼠标操作(可以在重叠区域拖动后面模型)。希望当3D区域前面有2D窗口遮挡的时候,让鼠标点击拖动只响应到2D窗口。

方案是判断鼠标在2D窗口内拖动时,让3D模型的拖动、旋转等鼠标操作失效。

RectTransform.RectangleContainsScreenPoint 方法顾名思义,判断矩阵范围是否包含屏幕点,参数:位置矩阵、屏幕点、使用的Camera 三个。

 
  1. if(RectTransformUtility.RectangleContainsScreenPoint(transform.GetComponent<RectTransform>(),

  2. Input.mousePosition, Cameras.UI))

  3. Debug.Log("在遮挡范围内");

 方法很简单,主要是要知道这个API,下面把 RectTransformUtility 其他API翻译整理下。

官方描述:Unity - Scripting API: RectTransformUtility

 提供了7个方法,分别列出来

① void FlipLayoutAxes(RectTransform rect, bool keepPositioning, bool recursive);

摘要:翻转 RectTransform 的水平、垂直轴,包括大小和对齐方式的翻转。

参数:

rect - 要翻转的 RectTransform;

keepPositioning - 是否保持自身位置,如果 true,则围绕轴翻转,如果为false,则在父 RectTransform 内翻转;

recursive - 子元素是否一起翻转。

② void FlipLayoutOnAxis(RectTransform rect, int axis, bool keepPositioning, bool recursive);

摘要:沿着水平或垂直方向翻转 RectTransform 的对齐方式。比如从左到右的控件水平翻转后,从右到左

参数:

axis - 要沿着翻转的轴。0是水平,1是垂直

③ Vector2 PixelAdjustPoint(Vector2 point, Transform elementTransform, Canvas canvas);

摘要:将屏幕给定点转换为像素正确点。

返回结果:像素转换后的点。

④ Rect PixelAdjustRect(RectTransform rectTransform, Canvas canvas);

摘要:给定 RectTransform,以像素精确坐标返回角点。

返回结果:像素调整后的 矩阵变换。

⑤ bool RectangleContainsScreenPoint(RectTransform rect, Vector2 screenPoint, Camera cam);

摘要:RectTransform 是否包含从给定相机看到的屏幕点。

返回结果:如果点在矩阵范围内,返回 True,否则返回 False。

⑥ bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint);

摘要:将屏幕空间点转换为 RectTransfrom 本地空间的位置。

参数:

rect - 要在里面找一个点的 RectTransfom。

cam - 屏幕空间点关联的 Camera。

screenPoint - 屏幕空间点

localPoint - 本地空间的点

⑦ bool ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint);

摘要:将屏幕空间点转换为 RectTransform 世界空间中的位置。

版权声明:本文为sinat_34337520原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:Unity判断鼠标点击是否在某个窗口 RectTransform 内_Cou流氓也要有文化的博客-CSDN博客_unity 判断鼠标是否在rect内

 

以上是关于Unity判断鼠标是否在ui的Recttransform内的源码的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D_UGUI判断鼠标或者手指是否点击在UI上

unity判断鼠标是否点击到ui,获得当前点击到的ui物体

[Unity 3d] 判断手指/鼠标按下触发在UI上的正确方法

unity 怎么识别鼠标点击在ui上

unity判断鼠标在不在UI上

Unity3D 判断鼠标是否按在UGUI上