您的位置:首页 > 移动开发 > Unity3D

unity 新GUI系统阻挡原生collider的方法

2015-11-09 20:06 591 查看
场景:

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,则没有被遮挡。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: