NGUI在3D场景中点击穿透解决办法

来源:互联网 发布:php 三级分销 开源 编辑:程序博客网 时间:2024/05/22 15:04

参考资料:

1:http://www.unitymanual.com/thread-22018-1-1.html

2:http://blog.163.com/hongwei_benbear/blog/static/11839529120135181619944/

3:http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=33092&extra=page%3D1

今天终于碰到了 资料1 里所说的点透问题(刚开始开到的时候没明白什么意思),重新再看了一下,又了解了一下相关知识(UICamera),今天又学到东西了。

基本知识上面参考资料里的都一样,只是根据我的实际问题总结汇总了一下。


问题:

1。当点击UIButton时,鼠标会透过button点到地面,人物会移动;

2。点击UIbutton弹出背包弹窗,点击弹窗边缘,人物也会移动。

解决办法:

1.给所有NGUI 物体对象都添加BoxCollider,并勾选 isTrigger,这样才能触发碰撞;

2.添加一个全局类 在Update()里 时时 检测碰撞,代码如下:

void Update(){if(HitTestUI()){//如果鼠标碰到了NGUI对象,则人物不能移动}}private bool HitTestUI()    {        /********以下两种判读都可以*******/        //如果在主Camer上也挂一个UICamera,这两种判读会一直返回真(为什么呢???)        //如果有碰到NGUI对象,返回真        if(UICamera.hoveredObject != null) { return true; }        print("UICamera.Raycast___" + UICamera.Raycast(Input.mousePosition));        //如果从UICamer到当前鼠标位置的射线碰到了NGUI对象,返回真        //if(UICamera.Raycast(Input.mousePosition)) { return true; }        return false;    }



0 0