在做项目的时候我是使用onMouseDown来处理点击3D物体的事件的,但发现在点击游戏UI的时候也会触发UI下面的3D物体的点击事件,这样可不行。
于是我参考了这篇文章:
https://blog.csdn.net/wealupa/article/details/117604939
修改成功!总结如下:
- 只触发上层UI,不触发UI下面的物体点击事件:
使用上面那篇文章中的“通过事件,实现接口IPointerClickHandler”方法
要点:-
给场景中的Camera添加PhysicsRaycaster脚本;
-
在场景中添加事件系统EventSystem,如图操作:
点击 Add Default… 后出现如图: -
设置被点击物体(3D)物体,一定要带触发器(Collider),然后把点击后处理的脚本挂在被点击的物体上
脚本内容如下:
-
using UnityEngine;
using UnityEngine.EventSystems; //要点
public class EventClick : MonoBehaviour,IPointerClickHandler //要点
{
public void OnPointerClick(PointerEventData eventData) //要点
{
print("点击了::"+this.name);
}
}
- 既触发UI,又触发下面物体的点击事件
使用onMouseDown函数
要点:只用给物体添加collider和场景中添加事件系统EventSystem