Unity 点击事件 拖拽事件

课程重点

         点击事件(自定义按钮)

         拖拽事件(摇杆)

 

课程知识点

         事件:玩家和游戏交互的一种方式

                   键盘

                   鼠标

                   手柄

                   麦克风

                   重力检测

                   触摸

                   VR(手柄,眼镜)

 

         触发UI事件的三个要素

  1. Canvas配置射线发射器

                       

  1. 场景中存在EventSystem组件

     

  1. 交互组件Raycast Target开启(Text组件或Image组件

 

         自定义点击实现

                   由于Unity是组件化开发思想,所以自定义按钮也是使用组件Script实现

                  

                   编写自定义事件步骤

  1. 引入自定义事件命名空间(UnityEngine.EventSystems)
  2. 实现自定义事件Interface
  3. 用户交互会触发回调函数

 

点击事件接口系列

         IPointerEnterHandler:鼠标光标移入射线检测区域,触发回调函数

IPointerExitHandler:鼠标光标移出射线检测区域,触发回调函数

 

IPointerDownHandler:鼠标在射线检测区域中按下,触发回调函数

IPointerUpHandler

前提:需要先触发按下事件

情况1:鼠标在射线检测区域中按下并抬起(正常点击)

情况2:鼠标在射线检测区域中按下,移出射线检测区域后抬起(点击后取消)

情况3:鼠标在射线检测区域外按下,再在区域外抬起(按下回调不执行)

情况4:鼠标在射线检测区域外按下,再在区域内抬起(按下回调不执行)

 

IPointerClickHandler:鼠标在射线检测区域中按下并抬起,触发回调函数,Up的情况2是不会触发Click事件的

 

Button点击事件分析

 

         拖拽事件实现

                   半透明渐变贴图在iOS设备下,使用压缩会造成图片质量损失,所以可以将半透明

                   渐变UI切片单独制作真彩色图集

 

                   拖拽事件组

                            IBeginDragHandler:检测到射线后,当拖拽动作开始时执行一次回调函数

IDragHandler:拖拽开始后,有拖拽位置变化时,执行回调函数(每个移动)

IEndDragHandler:拖拽进行中时,当鼠标或手抬起时,执行一次回调函数

                  

                   如何获取物体的位置

                            位置:相对量,需要有参照物体

                            屏幕坐标:手点击屏幕时生成

                            DragArea本地坐标:控制摇杆(DragBar)的位置

                          

                            需求:如何通过屏幕坐标系下的点,转换到DragArea本地坐标系下的点

                           

                            限制摇杆位置

                                    

 

posted @ 2019-06-19 16:07  D个人笔记  阅读(5054)  评论(0编辑  收藏  举报