博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity 点击事件 拖拽事件
阅读量:5122 次
发布时间:2019-06-13

本文共 1003 字,大约阅读时间需要 3 分钟。

课程重点

         点击事件(自定义按钮)

         拖拽事件(摇杆)

 

课程知识点

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

                   键盘

                   鼠标

                   手柄

                   麦克风

                   重力检测

                   触摸

                   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本地坐标系下的点

                           

                            限制摇杆位置

                                    

 

转载于:https://www.cnblogs.com/DGJS/p/11051966.html

你可能感兴趣的文章
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
第一个Java Web程序
查看>>
树状数组_一维
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>
linux install ftp server
查看>>
嵌入式软件设计第8次实验报告
查看>>
算法和数据结构(三)
查看>>
Ubuntu下的eclipse安装subclipse遇到没有javahl的问题...(2天解决了)
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
【题解】青蛙的约会
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>