美文网首页
Unity判断两个ui是否相交(矩形相交)

Unity判断两个ui是否相交(矩形相交)

作者: Clean_1306 | 来源:发表于2020-08-04 23:30 被阅读0次

直接上代码吧,不想bb了

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    public RectTransform rt1;
    public RectTransform rt2;

    // Start is called before the first frame update
    void Start()
    {
        Rect rect1 = RectTransToScreenPos(rt1, null);
        Rect rect2 = RectTransToScreenPos(rt2, null);

        Debug.Log(rect1.Overlaps(rect2));
    }


    /// <summary>
    /// 相机传入主要取决于rt都画布,如果画布使用camera模式,则传入对应的相机,反之为null,注意:wordspace模式我没有测试,不在此次记录范围
    /// </summary>
    /// <param name="rt"></param>
    /// <param name="cam"></param>
    /// <returns></returns>
    public static Rect RectTransToScreenPos(RectTransform rt, Camera cam)
    {
        Vector3[] corners = new Vector3[4];
        rt.GetWorldCorners(corners);
        Vector2 v0 = RectTransformUtility.WorldToScreenPoint(cam, corners[0]);
        Vector2 v1 = RectTransformUtility.WorldToScreenPoint(cam, corners[2]);
        Rect rect = new Rect(v0, v1 - v0);
        return rect;
    }
}

下面为测试结果:

测试结果1:

image.png

测试结果2:

image.png

注意:上图的画布使用Overlay模式,所以Camera参数直接传入null!!!

最后,附上unity判断相交方法的源码供大家参考:

image.png

相关文章

网友评论

      本文标题:Unity判断两个ui是否相交(矩形相交)

      本文链接:https://www.haomeiwen.com/subject/vygbrktx.html