一:解决问题
在Unity中使用UI或者3D事件的时候我们可能会遇到这么三种情况:1,使用了UGUI事件和Unity的OnMouseDown事件,如果重叠情况下就事件穿透了;2,我们需要UI与3D物体同时响应的情况,虽然第一种穿透是可以解决,但也是一种不太好的方式,如果啥时候不需要了,那就得改代码加判断了;3,使用鼠标键或者移动Touch时候得事件穿透。
二:实现分析
我们以前可能使用判断点击时是否时UI物体做判断解决的,这样在3D物体脚本中和或者射线检测中做需多的判断是不太合理的,逻辑结构不好也不清晰
现在推荐使用一套统一的方案:GraphicRaycaster与PhysicRaycaster是同一基类,前者响应UI,后者响应3D物体统这样UGUI的事件系统就能两者都响应,并且能取到事件排序列表
在逻辑实现上非常清晰,并且统一了实现方式,可以做成开关形式根据需求调用
三:具体实现
https://zhuanlan.zhihu.com/p/76844943