UGUI防止穿透和判断点击的是否是UI
admin
2023-01-28 13:19:59
0

年后刚上班,就有不幸的事情发生,项目界面要把NGUI推翻,用UGUI来做,真是蛋都碎了,但是没办法,在做的过程中遇UI穿透和点击的是否是UI,查资料,问朋友,弄出来,跟大家分享:


1.UGUI自带的防穿透代码:

 if (EventSystem.current.IsPointerOverGameObject())
                    {
                        return;//为真,则点击在UI上
                    }
   好像漏了点东西,没有写全,上面的只是Unity_Editor 下或者电脑上能运行,移动端是
  if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
                    {
                        return;//为真,则点击在UI上
                    }    
      总结:
   #if IPHONE || ANDROID
	if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
	if (EventSystem.current.IsPointerOverGameObject())
#endif
		Debug.Log("当前触摸在UI上");
			
	else 
	       Debug.Log("当前没有触摸在UI上");

2.查资料,自己写了一个判断

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

public class CheckUGUI : MonoBehaviour {

    public static bool CheckGuiRaycastObjects(EventSystem eventSystem, GraphicRaycaster graphicRayCaster)
    {
        PointerEventData eventData = new PointerEventData(eventSystem);
#if UNITY_EDITOR
        eventData.pressPosition = Input.mousePosition;
        eventData.position = Input.mousePosition;
#endif
#if UNITY_ANDROID || UNITY_IPHONE
        if (Input.touchCount > 0)
        {
            eventData.pressPosition = Input.GetTouch(0).position;
            eventData.position = Input.GetTouch(0).position;
        }
#endif
        List list = new List();
        graphicRayCaster.Raycast(eventData, list);
        return list.Count > 0;
    }

}

 第二种,我把它写成了一个类,用到的调用就行

  public EventSystem eventSystem;
  public GraphicRaycaster graphicRaycaster;
  
   if (CheckUGUI.CheckGuiRaycastObjects(eventSystem, graphicRaycaster))
    return;//为真,就点击的是UI。

 希望大家能用的上。

相关内容

热门资讯

【第一财经】“开心泉州麻将真的... 家人们!今天小编来为大家解答开心泉州麻将透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
我来教教您“新版九哥怎么装挂?... 您好:新版九哥这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
今日重大通报“姜丝麻将到底是不... 有 亲,根据资深记者爆料姜丝麻将是可以开挂的,确实有挂(咨询软件无需打开...
【今日要闻】“达人十三水有没有... 您好:达人十三水这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
玩家攻略科普“新版悟空开挂器?... 您好:新版悟空这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
今日重大消息“家乡大贰真的有挂... 您好:家乡大贰这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款游戏...
今日重磅消息“鱼扑克究竟有挂吗... 家人们!今天小编来为大家解答鱼扑克透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很多...
今日重磅消息“一喜棋牌怎么开挂... 今日重磅消息“一喜棋牌怎么开挂?”(太坑了果然有挂)您好,一喜棋牌这个游戏其实有挂的,确实是有挂的,...
【第一资讯】“新八戒怎么装挂?... 网上科普关于“新八戒有没有挂”话题很是火热,小编也是针对新八戒作*弊开挂的方法以及开挂对应的知识点,...
终于懂了“小乐红中麻将是不是有... 家人们!今天小编来为大家解答小乐红中麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...