前几天跟着一个教程做项目,作死的把里面的UI改成了NGUI+UGUI,于是有了这篇文章。以下:
先说关于UGUI点击穿透的解决办法(官方公布的解决办法)
EventSystem.current.IsPointerOverGameObject(),这个方法是判断鼠标是否点击到了GameObject上面,注意这个GameObject包括UI也包括3D世界里面的任何物体。这个是我当时参考的链接
http://www.cnblogs.com/fly-100/p/4570366.html
至于UGIUI中拖拽功能实现的麻烦程度,各位自行体会吧。
NGUI点击穿透的问题有两个解决方法:
UICamera.hoveredObject == null 按教程的意思的是鼠标所在位置没有NGUI组件,但是坑的地方就在这里,这个函数跟EventSystem.current.IsPointerOverGameObject()相互冲突。
最后我使用NGUI的!UICamera.isOverUI,他是bool类型,即鼠标不再BGUI上鼠标点击生效。
注意勾选auto-adjust to match。
NGUI下一定要Attach box collider!
NGUI下一定要Attach box collider!
NGUI下一定要Attach box collider!
成功运行的代码:
if(!EventSystem.current.IsPointerOverGameObject() && !UICamera.isOverUI){
// 鼠标点击生效
}