Unity3D 鼠标双击事件
Unity3D 鼠标双击事件总结了几种,特来记录一下!
一、
计时
Time.realtimeSinceStartup
,从开始运行到首次点击的时间、跟、开始运行到下一次点击的时间、的时间差。
private float time;
void Update () {
if (Input.GetMouseButtonDown(0))
if (Time.realtimeSinceStartup - time < 0.2f)
Debug.Log("Double Clock");
time = Time.realtimeSinceStartup;
二、使用Event.current.clickCount,必须写在OnGUI()中。运行后,随意双击就会执行,不需进入物体范围。
private void OnGUI()
if (Input.GetMouseButtonDown(0) && Event.current.isMouse && Event.current.clickCount == 2)//必须写在OnGUI中
Debug.Log("Double Click");
三、使用射线RaycastHit,设置时间间隔,从摄像机向鼠标点击的位置发射一条射线 ,并且射线检测到的物体是当前挂着该脚本的物体。(即鼠标进入物体时,双击才有效。物体要带碰撞体Collider。)
private float time;
void Update () {
if (Input.GetMouseButtonDown(0))//鼠标左键点击,1:右键;2:中键
RaycastHit hit;
//向鼠标点击的位置发射一条射线 && 射线检测到的物体是当前挂着该脚本的物体
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit) && hit.transform == transform)
//点击的时间间隔在0.2s内
if ((Time.realtimeSinceStartup - time) < 0.2f)
//要双击的物体上一定要有碰撞器,并且碰撞器和本脚本挂在同一个物体上
Debug.Log("Double Click");
time = Time.realtimeSinceStartup;
四、一些其他的双击,例如移动端
可参考https://blog.csdn.net/ycl295644/article/details/46816699。
这篇文章就来实现UI的单击、双击、按压、拖动的不同状态判断。不定时更新Unity开发技巧,觉得有用记得一键三连哦。如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。
由于项目需求,需要使用鼠标点击来实现滑动事件,查看官方文档对Input.GetMouseButton部分进行了了解。
GetMouseButton:每一帧鼠标处于按下状态都会返回true,Input.GetMouseButton(0):表示鼠标左键按下,Input.GetMouseButton(1):表示鼠标右键按下,Input.GetMouseButton(2):表示鼠标中键按下
下面举例在unity里面Canvas下面添加一个image,当鼠标移动到image点击一次触发事件 Debug.Log(“SingleClick!”);当鼠标在image点击两次触发事件 Debug.Log(“DoubleClick!”);鼠标双击和单机出现不同的响应事件在上述代码中,我们使用 lastClickTime 记录上一次单击的时间,在回调函数中计算两次单击之间的时间间隔,如果小于 doubleClickInterval,则认为触发了双击事件,否则触发了单击事件。
1、鼠标抬起时判断是否有点击到模型对象 2、鼠标抬起时会判断当前模型对象是否和落下时为同一个对象 3、鼠标按下和抬起之间的时间间隔少于220毫秒 4、鼠标落下和抬起的距离不大于10像素
二、实现原理
1、监听 EventSystem.current.IsPointerOverGameObject() == false (PC )或者 EventSystem.current.I...
当鼠标按键按下时,返回一次true,后面参数0是左键,1是右键,2是中键
if(Input.GetMouseButtonDown(0))
Debug.Log("Pressed left click.");
if(Input.GetMouseButtonDown(1))
Debug.Log("Pressed right click.");
if(Input.GetMouseBut...