Unity3D工具类 - 鼠标单击双击

    xiaoxiao2022-06-29  27

    转自: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), "在舞台上单击/双击查看输出!"); } }
    转载请注明原文地址: https://ju.6miu.com/read-1124871.html

    最新回复(0)