unity的鼠标双击和移动触摸屏的双击

鼠标的双击相对比较简单,百度一下可以搜到很多,如下:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class MJCard : MonoBehaviour,IPointerClickHandler {

    float t1;
    float t2;
    public void OnPointerClick(PointerEventData eventData)
    {
        if (eventData.clickCount == 2)
        {
            Debug.log("双击");
        }
    }
}


上面是双击屏幕的事件,假如想双击某个物体呢,就要这样:

[csharp]  view plain  copy
  1. private bool b;  
  2. void Update(){  
  3.     if(Event.current.isMouse && Event.current.type == EventType.MouseDown && Event.current.clickCount == 2){  
  4.         if(b){  
  5.             print("double click " + transform.name);  
  6.         }  
  7.     }  
  8. }  
  9. void OnMouseEnter(){  
  10.     b = true;  
  11. }  
  12. void OnMouseExit(){  
  13.     b =false;  
  14. }  

意思就是,当鼠标进入你想点击的物体后,双击才有效果,否则鼠标未进入物体,或者exit时,b = false,双击无效果。


下面是移动设备上触屏的双击:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class MJCard : MonoBehaviour,IPointerClickHandler {

    float t1;
    float t2;
    public void OnPointerClick(PointerEventData eventData)
    {
        t2 = Time.realtimeSinceStartup;
        if (t2 - t1 < 0.2)
        {
            Debug.log("双击");
        }
        t1 = t2;
    }
    //或者
    private float t1;  
	private float t2;  
	void Update(){  
    	if(Input.GetMouseButtonDown(0)){  
        	t2 = Time.realtimeSinceStartup;  
        	if(t2 - t1 < 0.2){  
            	print("double click");  
        	}  
        	t1 = t2;  
    	}  
	}  
}



我在一篇博客看到过移动端GetMouseButtonDown是有效果的,所以这样利用t1,t2,记录两次单击的时间间隔,假如小于0.2s,则被判断为双击。

同样,移动端点击某一确定物体的双击事件,把下面脚本赋给要点击的物体,

[csharp]  view plain  copy
  1. private var t1:double;  
  2. private var t2:double;  
  3. public var cam:Camera;  
  4. function Update(){  
  5.     if(Input.GetMouseButtonDown(0)){  
  6.         var ray:Ray = cam.ScreenPointToRay(Input.mousePosition);  
  7.         var hit:RaycastHit;  
  8.         if(Physics.Raycast(ray,hit)){  
  9.             if(hit.transform.name == gameObject.transform.name){  
  10.                 t2 = Time.realtimeSinceStartup;  
  11.                 if(t2 - t1 < 0.2){  
  12.                     print("double click " + transform.name);  
  13.                 }  
  14.                 t1 = t2;  
  15.             }  
  16.         }  
  17.     }  
  18. }  
参考: http://blog.csdn.net/khdhzdx/article/details/36870945
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TxNet.Ltd.

你的赞同是对我的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值