zoukankan      html  css  js  c++  java
  • Unity中UGUI鼠标穿透UI问题的解决方法

     不过在使用时需要先获取两个红色显示的变量,graphicRaycastereventSystem

    这两个变量分别对应的是Canvas中的GraphicRaycaster组件和创建UI时自动生成的“EventSystem”中的EventSystem组件。

    引用

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

      private GraphicRaycaster graphicRaycaster;
        private EventSystem eventSystem;
        void Start()
        {
            graphicRaycaster = GameObject.Find("Canvas").GetComponent<GraphicRaycaster>();
            eventSystem = GameObject.Find("EventSystem").GetComponent<EventSystem>();
        }
    
        // Update is called once per frame
        void Update()
        {
            if (CheckGuiRaycastObjects()) return;//防止射线穿透UI界面
            Debug.Log(EventSystem.current.gameObject.name);
            if (Input.GetMouseButtonDown(0))
            {
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
    
                if (Physics.Raycast(ray, out hit))
                {
                    //获取碰撞点的位置
                    if (hit.collider.name == "Terrain")
                    {
                        Debug.LogError(hit.collider.name);
                    }
                }
            }
        }
    
        bool CheckGuiRaycastObjects()
        {
            PointerEventData eventData = new PointerEventData(eventSystem);
            eventData.pressPosition = Input.mousePosition;
            eventData.position = Input.mousePosition;
    
            List<RaycastResult> list = new List<RaycastResult>();
            graphicRaycaster.GetComponent<GraphicRaycaster>().Raycast(eventData, list);
            Debug.Log(list.Count);
            return list.Count > 0;
        }
  • 相关阅读:
    (转)基于MapWinGis开发探索(一)
    ArcGIS Server REST API开发相关新词汇
    自写地图全图功能
    向远程目录写数据
    GetUpperBound方法
    监控安装教程
    办公室局域网打印机共享设置
    电脑Bois中usb模式启动热键
    SQL SERVER 2005无法远程连接
    用网线直接把打印机连入网络的问题
  • 原文地址:https://www.cnblogs.com/Study088/p/7903082.html
Copyright © 2011-2022 走看看