Unity中关于2D游戏的鼠标点击事件和UI层级检测的大坑
2018-02-05 00:51
465 查看
最近的项目中遇到了一个大坑,就是关于2D游戏的鼠标点击事件和UI层级检测的。不知道大家有没有用过
Unity中内置的函数OnMouseDown等。如果你用了OnMouseDown这个函数,然后呢又恰巧用了UI,当然
很多时候我们都会用到UI。这个时候要注意了。
我猜测,这个Unity内置的OnMouseDown的实现原理就是利用射线检测来实现的,只不过官方为我们把这个方法封装成了回调法。我们在用射线检测一个游戏物体的时候,要特别注意这个游戏中各个物体之间的层级关系。我在这里就
遇到了这个问题。当我点击这个游戏物体的时候,本来它应该做出相应的变化,但是效果却不好,有时候能
检测到,有时候不能。找了半天,才发现原因。原因就是我没有规划好UI的层级检测关系。因为当我点击鼠
标的时候,UI会来妨碍,这一个Canvas把我几乎所有的检测都遮挡住了。所以呢我就去网上查找了相关资料
,最后终于把问题解决了。
如何解决呢?
关键的地方在Canvas上面挂着的组件。最大的问题在那个叫做,Grphic Raycaster组件上面。我
们要把Blocking Objects选成Two D,然后把BlockingMask勾选成UI。这样就可以了,这样就代表在2D
游戏场景中,不对UI物体做射线检测。
相关文章推荐
- Unity3d实现检测鼠标点击2d object事件
- unity检测鼠标是点击在UI上还是物体上
- 【学习笔记】 Unity中在点击UI时屏蔽游戏内点击事件
- unity OnMouseDown 不能监测鼠标右键点击事件
- Unity UGUI鼠标点击UI不受影响方法IsPointerOverGameObject
- unity2d游戏开发大坑之图集打包
- Unity中UGUI中获取鼠标点击位置以及UI物体的屏幕坐标
- 「Unity」键盘、鼠标,检测按键输入事件
- Unity 将UI放置在鼠标点击位置的位置
- 关于鼠标点击事件
- Unity Ui点击事件实现
- Unity2D 之 Sprite点击事件
- 绘图基础--检测在矩形中鼠标点击事件
- Unity3D 2D游戏鼠标点击选中对象如何实现
- unity初识之2d游戏中做碰撞检测
- unity 2D中的向着鼠标点击方向进行射击
- 【Unity】UGUI如何判断鼠标或者手指是否点击到UI上
- Unity游戏UI框架(八):监听事件系统
- Unity_2D游戏实例从零讲起(3)——基本菜单UI的实现
- unity 判断鼠标或者手指是否点击在UI上