537  
查询码:00000226
关于Unity中2D与3D事件穿透与不穿透的解决方案
作者: 何宗良 于 2020年06月10日 发布在分类 / BIM组 / BIM视图 下,并于 2020年06月10日 编辑
Unity3d

一:解决问题

在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

















 推荐知识

 历史版本

修改日期 修改人 备注
2020-06-10 16:48:50[当前版本] 何宗良 创建版本

知识分享平台 -V 4.8.7 -wcp