Unity3D工具类 - 鼠标单击/双击
来源:互联网 发布:c语言教材 谭浩强 pdf 编辑:程序博客网 时间:2024/04/30 10:26
转自:http://www.omuying.com/article/5624.aspx
using System;using UnityEngine;using System.Collections;public class MouseResponseManager{ public static void Register(GameObject objectItem, Action clickCallback, Action doubleCallback) { if (objectItem == null) { objectItem = new GameObject(); objectItem.name = "MouseResponseItem"; } MouseResponseItem mouseResponseItem = objectItem.AddComponent<MouseResponseItem>(); mouseResponseItem.Init(clickCallback, doubleCallback); }}public class MouseResponseItem : MonoBehaviour{ private bool mouseDownStatus; private int mouseDownCount; private float lastTime; private float currentTime; private Action clickCallback; private Action doubleCallback; public void Init(Action clickCallback, Action doubleCallback) { this.clickCallback = clickCallback; this.doubleCallback = doubleCallback; } void Update() { if (Input.GetMouseButtonDown(0)) { if (!this.mouseDownStatus) { this.mouseDownStatus = true; //Debug.Log("Click !"); if (this.clickCallback != null) this.clickCallback(); // 如果按住数量为 0 if (this.mouseDownCount == 0) { // 记录最后时间 this.lastTime = Time.realtimeSinceStartup; } this.mouseDownCount++; } } if (Input.GetMouseButtonUp(0)) { //Debug.Log("Up !"); this.mouseDownStatus = false; } if (this.mouseDownStatus) { //Debug.Log("Hold !"); if (this.mouseDownCount >= 2) { this.currentTime = Time.realtimeSinceStartup; if (this.currentTime - this.lastTime < 0.3f) { this.lastTime = this.currentTime; this.mouseDownCount = 0; //Debug.Log("Double Click"); if (this.doubleCallback != null) this.doubleCallback(); } else { // 记录最后时间 this.lastTime = Time.realtimeSinceStartup; this.mouseDownCount = 1; } } } }}
测试代码:
using UnityEngine;using System.Collections;public class Test : MonoBehaviour{ void Start() { MouseResponseManager.Register(null, () => { Debug.Log("click"); }, () => { Debug.Log("double click"); }); } void OnGUI() { GUI.Label(new Rect(15, 15, 300, 100), "在舞台上单击/双击查看输出!"); }}
0 0
- Unity3D工具类 - 鼠标单击/双击
- Unity: Unity3D 模拟鼠标单击/双击
- 鼠标双击变单击
- 鼠标单击变双击问题
- js判断鼠标双击单击
- unity鼠标单击双击事件
- 鼠标单击和双击处理
- js判断鼠标双击单击
- 鼠标添加单击双击事件
- java 鼠标单击和双击的控制
- 光电鼠标单击变双击了怎么办?
- 鼠标单击和双击中的事件处理
- 修复鼠标单击变双击的问题
- Android 鼠标事件 (单击,双击,滑动)
- Android 鼠标事件 (单击,双击,滑动)
- javascript解决鼠标单击双击冲突方法
- jquery 区分鼠标单击双击事件插件
- 鼠标单击变双击问题排查
- js学习—DOM元素
- 【Java】核心技术点之【注解】
- 欢迎使用CSDN-markdown编辑器
- 用Java语言编写一个"答答租车系统"
- 关于如何在web.xml中配置spring
- Unity3D工具类 - 鼠标单击/双击
- 二级指针的3种内存模型
- 5分种让你了解javascript异步编程的前世今生,从onclick到await/async
- Spring中的ContextLoaderListener使用
- Android Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- 网站新手引导tips提示功能开发经验分享
- kindeditor-4 img 绝对路径问题
- A Simple Web App with Spring Boot, Spring Security and Stormpath – in 15 Minutes
- OpenGL ES教程