打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
18:unity3d

18:unity3d-UGUI鼠标穿透UI问题的解决方法

字数456 阅读123 评论0 喜欢3
hello,大家好,我是zero,有需要资源的朋友,可以给我留言,或者加我QQ(1269064684)当然也可以留下邮箱喔,我会发给你们的,谢谢你们支持zero

当我们使用UGUI的时候会经常遇到鼠标穿透的问题,就是说在UGUI和3D场景混合的情况下,点击UI区域同时也会 触发3D中物体的鼠标事件。比如下图中:


UGUI鼠标穿透问题解决

那么这时候我们就需要解决这个棘手的问题了,其实也不难,只需要检测鼠标是否点击在UI元素上就可以了,zero利用的是EventSystem(事件系统);
当然了,或许有些朋友不懂EventSystem.current.IsPointerOverGameObject()是什么,没关系,zero已经为你附上了unity官网的链接地址:
http://docs.unity3d.com/ScriptReference/EventSystems.EventSystem.IsPointerOverGameObject.html
先搭建一个简单的场景,如下:


完成结果

下面就是我们的解决方法了:

using UnityEngine;using UnityEngine.EventSystems;/// <summary>/// 脚本位于Canvas画布上/// </summary>public class PointerPenetrate : MonoBehaviour{    /// <summary>    /// cube    /// </summary>    public GameObject cube;    void Update()    {        //按下鼠标左键        if (Input.GetMouseButtonDown(0))        {            //当前检测到的是否是UI层               if (EventSystem.current.IsPointerOverGameObject())            {                //是UI的时候,执行相关的UI操作                Debug.Log("是UI");            }            else            {                //不是UI层的时候,执行其它操作                Debug.Log("不是UI");                //射线检测                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);                //定义射线检测器                RaycastHit hitInfo;                if (Physics.Raycast(ray, out hitInfo))                {                    //如果当前射线检测到的对象的名字是cube                    if (hitInfo.collider.name == "Cube")                    {                        //改变cube的颜色,随机一个颜色                        cube.GetComponent<MeshRenderer>().material.color =                            new Color(Random.value, Random.value, Random.value, 1.0f);                    }                }            }        }    }}

记得观察控制台的输出喔


现在就可以尽情的点击测试了
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
UGUI -(unity3d 5)判断是否点击在UI 上 Bug,IsPointerOverGameObject()在移动输入模式检测失败
【新提醒】【转载】Unity UGUI鼠标穿透UI问题
Unity UGUI之Canvas&EventSystem
干货丨Unity5.0 EventSystem事件系统的详细说明
unity区分点击在3D物体还是2D UI上
Unity3D事件系统和EventSystem详细解读
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服