Unity 鼠标点击事件穿透

在做项目的时候我是使用onMouseDown来处理点击3D物体的事件的,但发现在点击游戏UI的时候也会触发UI下面的3D物体的点击事件,这样可不行。
于是我参考了这篇文章:
https://blog.csdn.net/wealupa/article/details/117604939

修改成功!总结如下:

  • 只触发上层UI,不触发UI下面的物体点击事件:
    使用上面那篇文章中的“通过事件,实现接口IPointerClickHandler”方法
    要点:
    1. 给场景中的Camera添加PhysicsRaycaster脚本;

    2. 在场景中添加事件系统EventSystem,如图操作:在这里插入图片描述
      点击 Add Default… 后出现如图:在这里插入图片描述

    3. 设置被点击物体(3D)物体,一定要带触发器(Collider),然后把点击后处理的脚本挂在被点击的物体上在这里插入图片描述
      脚本内容如下:

using UnityEngine;
using UnityEngine.EventSystems; //要点

public class EventClick : MonoBehaviour,IPointerClickHandler //要点
{
    
    
    public void OnPointerClick(PointerEventData eventData)  //要点
    {
    
    
       print("点击了::"+this.name);
    }
}
  • 既触发UI,又触发下面物体的点击事件
    使用onMouseDown函数
    要点:只用给物体添加collider和场景中添加事件系统EventSystem

猜你喜欢

转载自blog.csdn.net/m0_46664771/article/details/124279742