unity中解决UI穿透问题

来源:互联网 发布:淘宝如何开天猫店铺 编辑:程序博客网 时间:2024/04/27 15:08

unity中 当UI控件显示在屏幕前 点击只希望UI有效果,而不希望出现穿透。

解决方案 如下:


//引入命名空间

using UnityEngine.UI;

using UnityEngine.EventSystems;


public class Test : MonoBehaviour

{

       //声明

    EventSystem eventsystem;
    GraphicRaycaster RaycastInCanvas;


    void Awake()

    {

         //指定

        RaycastInCanvas = GameObject.Find("Canvas").GetComponent<GraphicRaycaster>();

    }


    void Update

    {

          //如果先接触的是UI就return 不执行额外点击事件

        if (CheckGuiRaycastObjects())
            return;

         //对于游戏世界内3D物体的点击事件

        if(Input.GetMouseButtonDown(0))

         {

            ...  //略

         }

    }


//检测是否接触到UI

   bool CheckGuiRaycastObjects()

    {

        PointerEventData eventData = new PointerEventData(eventsystem);
        eventData.pressPosition = Input.mousePosition;
        eventData.position = Input.mousePosition;
        List<RaycastResult> list = new List<RaycastResult>();
        RaycastInCanvas.Raycast(eventData, list);
        return list.Count > 0;

    }

0 0
原创粉丝点击