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,则没有被遮挡。
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,则没有被遮挡。
相关文章推荐
- Unity 配置静态excel 工作流程
- unity 2D Sprite网格Slice工具
- 【Unity】射线中LayerMask参数的使用方式
- Unity UILabel 输入空格自动换行的解决
- 如何提高Unity Gear VR游戏性能
- 【Unity】通过AnimatorController更改其中某个动画片断的速度
- BoYing Unity 之 Shader 笔记(一)帧动画
- 项目记录03--客unity,服erlang--框架net
- 被Unity5坑惨了
- Unity自动保存场景脚本
- 深度分析Unity的Coroutine
- 项目记录02--客unity,服erlang--框架net
- unity3d中的欧拉角
- Unity RPG游戏,场景任务的设计
- [Unity热更新]lua基础(一)
- 1.Unity脚本生命周期
- UnityVS(Visual Studio Tools For Unity)的安装与使用
- Unity3D 新动画Animator的事件添加和使用
- Physics.IgnoreLayerCollision没有效果
- Unity3D游戏引擎最详尽基础教程