场景:
1、场景里有小怪,小怪可以响应点击
2、有UI界面(如物品栏)显示后,点击事件穿过UI到小怪身上去了(按道理UI界面显示的时候,后面的应该不响应)
问题:
UI系统如何block住raycast?
尝试:
1、给UI系统的canvas增加canvas group,将blocks raycasts勾去掉(无效)
2、将UI的canvas的Ui scale Mode由screen space-overlay改为wordspace,重复1(无效)
3、修改UI canvas的GraphicRaycaster的Blocking objects和Blocking Mask相关(无效)
分析+猜想:
1、canvas group的blocks raycasts只对UI系统有效
2、Ui scale Mode并不影响当前运行时的遮挡关系
3、GraphicRaycaster的这堆东东不知道咋用,搜了半天官方文档没得出结论。
解决问题:
上网各种搜,看到这篇贴:
http://answers.unity3d.com/questions/822273/how-to-prevent-raycast-when-clicking-46-ui.html
问题解决。
给collider的gameobject响应事件时增加一个UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject()的判断。
如果为false,则没有被遮挡。