Unity 点击事件 拖拽事件
课程重点
点击事件(自定义按钮)
拖拽事件(摇杆)
课程知识点
事件:玩家和游戏交互的一种方式
键盘
鼠标
手柄
麦克风
重力检测
触摸
VR(手柄,眼镜)
触发UI事件的三个要素
- Canvas配置射线发射器
- 场景中存在EventSystem组件
- 交互组件Raycast Target开启(Text组件或Image组件)
自定义点击实现
由于Unity是组件化开发思想,所以自定义按钮也是使用组件Script实现
编写自定义事件步骤
- 引入自定义事件命名空间(UnityEngine.EventSystems)
- 实现自定义事件Interface
- 用户交互会触发回调函数
点击事件接口系列
IPointerEnterHandler:鼠标光标移入射线检测区域,触发回调函数
IPointerExitHandler:鼠标光标移出射线检测区域,触发回调函数
IPointerDownHandler:鼠标在射线检测区域中按下,触发回调函数
IPointerUpHandler
前提:需要先触发按下事件
情况1:鼠标在射线检测区域中按下并抬起(正常点击)
情况2:鼠标在射线检测区域中按下,移出射线检测区域后抬起(点击后取消)
情况3:鼠标在射线检测区域外按下,再在区域外抬起(按下回调不执行)
情况4:鼠标在射线检测区域外按下,再在区域内抬起(按下回调不执行)
IPointerClickHandler:鼠标在射线检测区域中按下并抬起,触发回调函数,Up的情况2是不会触发Click事件的
Button点击事件分析
拖拽事件实现
半透明渐变贴图在iOS设备下,使用压缩会造成图片质量损失,所以可以将半透明
渐变UI切片单独制作真彩色图集
拖拽事件组
IBeginDragHandler:检测到射线后,当拖拽动作开始时执行一次回调函数
IDragHandler:拖拽开始后,有拖拽位置变化时,执行回调函数(每个移动)
IEndDragHandler:拖拽进行中时,当鼠标或手抬起时,执行一次回调函数
如何获取物体的位置
位置:相对量,需要有参照物体
屏幕坐标:手点击屏幕时生成
DragArea本地坐标:控制摇杆(DragBar)的位置
需求:如何通过屏幕坐标系下的点,转换到DragArea本地坐标系下的点
限制摇杆位置