U2D和UGUI的鼠标流使用方法

本文介绍了UGUI和U2D中处理鼠标事件的方法,包括EventSystem.current.IsPointerOverGameObject()的使用,避免鼠标穿透UI的策略,以及UGUI中使用IPointerEnterHandler等接口和EventTrigger组件来响应鼠标事件。同时,讨论了U2D中Box Collider结合OnMouseEnter()的注意事项和解决方案。
  1. EventSystem.current.IsPointerOverGameObject(),返回值表示的含义是当前鼠标所在的位置,有没有UI(UGUI)元素,该脚本所在的对象不算。(这个函数的作用是为了弹出的UI面板,鼠标点击时,穿透UI面板而触发面板下面物体OnMouseEnter的问题。)

  2. UGUI的碰撞检测方法:

    1. 禁止使用Box Collider + OnMouseEnter()的方法, 因为OnMouseEnter()不管有没有覆盖物体,都会被触发。如果你不想在对象Mono被覆盖的时候,还能触发该函数,就不要使用这种方法。

    2. UGUI使用继承接口的方式,使用EventSystem系统,此方法UI元素不需要添加Collider组件:

                        IPointerEnterHandler,

                        IPointerExitHandler,

                        IPointerDownHandler,

                        IPointerClickHandler

                 3. UGUI元素添加EventTrigger组件 ,以拖拽的方式添加事件方法给EventTrigger

                 4. 添加Button脚本

                 5. 组合型UGUI:父亲是个EmptyGameObject, 有 Image1和Image2两个孩子,若父亲挂有脚本,且脚本内使用方法B或C, 则孩子们视为整体,任意孩子发生点击行为,父亲脚本内的OnPointerEnter()都会触发,并且能得到被点击的UI对象。

                 6 . 在E的基础上,使用卡牌举例,使用空物体作为顶层父亲,顶层父亲下面会挂载ImagCardFram,ImagCardSkill,TxtCardName等;首先,需要在顶层空物体上添加Image组件,该Image不做显示,只作物理范围限制(可调节RectTransform的长和宽),其次,需要取消所有子UI物体的RayCast Taeget。

                 7. 在F的基础上,顶层父亲可以添加Canvas和GraphicRender,来设定Sording Layer和Ordering Layer.

    3. U2D使用Box Collider + OnMouseEnter()的方法,但是要注意,如果该U2D对象上方弹出了UGUI的面板或者上方有UI元素,即使鼠标落在上层的UI元素上,此时的OnMouseEnter()还是会触发,即产生了穿透现象。解决方法是在OnMouseEnter()内第一行加上判断:if (EventSystem.current.IsPointerOverGameObject()) return;//若鼠标所在的地方,不管是上层还是下层,检测到有UI元素存在,则退出。该方法有很大的局限性。

4. U2D的两种常用的判断点击的方法:

           

 

5. UGUI常用的EventTrigger方法:


            //添加UGUI事件监听器

            EventTrigger trigger = mask.AddComponent<EventTrigger>();

            //添加OnClick事件

            EventTrigger.Entry entry = new EventTrigger.Entry();

            entry.eventID = EventTriggerType.PointerClick;

            entry.callback.AddListener(OnClick_Mask);

            trigger.triggers.Add(entry);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值