有时候需要用到双击事件,而unity未提供双击控件,在此提供两种双击事件方法,进攻参考:

1)此方法为通过unityevent来实现

首先新建image(或其他不带点击事件的控件),添加如下脚本,然后就可以像button控件单击事件一样添加双击方法,设定双击间隔为0.5s

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems; public class DBlick1 : MonoBehaviour,IPointerDownHandler{
[SerializeField]
UnityEvent doubleClick = new UnityEvent(); public float Interval = 0.5f; private float firstClicked = ;
private float secondClicked = ; public void OnPointerDown(PointerEventData eventData)
{
secondClicked = Time.realtimeSinceStartup; if(secondClicked-firstClicked<Interval)
{
doubleClick.Invoke();
}
else
{
firstClicked = secondClicked;
}
} // Use this for initialization
void Start () { } // Update is called once per frame
void Update () { }
}

2)通过button在button绑定的方法中触发

    public float Interval = 0.5f;

    private float firstClicked = ;
private float secondClicked = ; public void OnDoubleClicked()
{
secondClicked = Time.realtimeSinceStartup; if (secondClicked - firstClicked < Interval)
{
print("clicked");
}
else
{
firstClicked = secondClicked;
}
}

3)触屏简单方法

(最近刚发现的触屏双击方法,更新与2018-4-18)

采用input类方法即

if (Input.GetTouch().tapCount == ) 
GetTouch(0)表示第一次点击屏幕,tapCount表示点击次数,上述即为如果点击屏幕等于两次即。。。。。

PS:

1)第一种方法适合存在众多双击事件时使用,第二种则适合只有一个单击事件时使用,两者并无太大差别,均可使用,适合与否只是从代码量上考虑

2)两种方法均存在一个问题,即当鼠标连续点击三次时,由于逻辑的问题,事件会触发两次,可以增加一个变量来进行控制,在此只是提供两种双击事件的思路

上述问题2)解决(同时通过更改clickedCount可实现三点击,四点击等)

    public int clickedCount = ;
public float clickedInterval = 0.5f; private float lastClickedTime = ;
private float count = ; public void OnClicked()
{
float interval = Time.realtimeSinceStartup - lastClickedTime;
if(interval <= clickedInterval)
{
count++;
if(count==clickedCount-)
{ //TODO:
}
}
else
{
count = ;
}
lastClickedTime = Time.realtimeSinceStartup;
}

最新文章

  1. Java EE 经验
  2. 我对git认识
  3. [UE4]AnimDynamics简介
  4. J2EE中关于tomcat的maxIdle、maxActive、maxActive相关配置
  5. # 20145334 《Java程序设计》第9周学习总结
  6. CSS 实现加载动画之一-菊花旋转
  7. 【云计算】Docker Nginx示例
  8. Linux源码的目录结构
  9. 【扩展欧几里得】BAPC2014 I Interesting Integers (Codeforces GYM 100526)
  10. XTU1199:Number Game
  11. Design Pattern ——Factory Method&amp;Abstract Factory
  12. 企业OA面临的问题,以及解决问题的推荐
  13. C#开发中遇到问题常问题
  14. BZOJ2431_逆序对数列_KEY
  15. 天气类API调用的代码示例合集:全国天气预报、实时空气质量数据查询、PM2.5空气质量指数等
  16. Action写法心得
  17. 「SDOI 2018」反回文串
  18. nw.js---创建一个hello word的方法
  19. 2017-2018-2 20165312实验二《Java面向对象程序设计》实验报告
  20. 【JAVA WEB教程】jsp环境搭建+部署网站(eclipse+tomcat)【详细+图文】

热门文章

  1. connection pool exhausted
  2. mysql 查找数组格式的字符串中是否包含某个值
  3. centos7 远程连接其他服务器redis
  4. Python基础(十八)
  5. C++常用库函数(1)
  6. Spring Boot (八): Mybatis 增强工具 MyBatis-Plus
  7. FastEarth
  8. html、css以及javascript的注释方式
  9. 设置VMWare CentOS7虚拟机上网(配置静态地址)
  10. WampServer配置可局域网访问站点