Unity3D工具类 - 鼠标单击/双击

转自: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Odin Inspector是一个操作Unity对象的插件,可以增强Unity编辑器中的开发体验。Odin Inspector 3.0.4版本是该插件的一个更新版本,可以通过CSDN下载获得。 该插件通过注解的方式可以为Unity对象添加更多的编辑器控件,如:枚举选择器,拖拽选择器,开关按钮等。同时,该插件也提供了一些常用的数据类型,如:字典、序列化树等。 Odin Inspector使用起来非常方便,只需要在需要增强的类或属性前添加对应的注解即可,这样就可以在Unity编辑器中变得更加灵活和直观。此外,Odin Inspector还提供了一些自定义的标记属性,可用于美化编辑器界面或增加辅助功能。 总的来说,Odin Inspector插件是一个非常实用的Unity开发工具,可以为Unity开发者提高开发效率和开发体验。而CSDN下载的unity3d文档类资源,也为我们提供了方便的使用说明和示例代码,有助于我们更快地上手和运用该插件。 ### 回答2: Odin Inspector是Unity3D的插件,这个插件可以在Unity编辑器中为开发人员提供更多的调试、编辑和自定义选项。Odin Inspector的3.0.4版本是最新的版本,这个版本通过提供更多的功能来提高了编辑器的性能和效率。Odin Inspector 3.0.4支持C#生成代码,这使得开发者可以以更快的速度编写代码,而且还提供了一个强大的反射系统,能够在使用过程中自动为脚本创建编辑器。此外,Odin Inspector可以让开发者轻松地创建自定义的编辑器窗口和面板,并提供多种工具和快捷键以帮助开发者更加高效地开发Unity项目。 而在CSDN上可以下载Unity3D文档类资源,这些资源包括了Unity3D的官方文档以及其他一些非官方的教程和手册。这些资源可以帮助开发者学习Unity3D的基础知识和高级技巧,并且对于使用Odin Inspector来增强开发人员的编辑器体验来说也非常有用。在CSDN上下载这些资源非常容易,只需要注册并登录即可随时下载和使用。 总之,Odin Inspector版本3.0.4和CSDN中的Unity3D文档类资源都可以帮助Unity3D开发者提高效率和编写更好的代码。它们是Unity3D开发过程中的重要工具,能够帮助开发者更好地利用Unity编辑器的功能,并加速开发过程。 ### 回答3: Unity是一款流行的游戏引擎,为了方便开发者使用Unity,社区推出了许多插件,其中Odin Inspector 3.0.4版本是一个非常优秀的插件。这个插件可以用来简化Unity的开发流程,提高开发效率。 Odin Inspector 3.0.4版本主要提供了一些高级编辑器功能,如可定制化的Inspector面板、可扩展属性系统、强大的序列化和反序列化等。它还包含了一些常用的扩展功能,如资源管理器、GUI工具、命名空间工具等等。它的强大功能让开发者可以更加方便地设置和管理游戏中的各种对象和组件。 此外,Unity3D文档类资源在开发过程中也起到了不可替代的作用。这些文档提供了关于Unity3D的详细信息和指南,包括游戏开发、图形渲染、物理引擎、脚本编程等方面的内容。 Odin Inspector 3.0.4版本和Unity3D文档类资源可以通过CSDN进行下载,CSDN是一个技术社区,拥有大量的技术资源和开发者社区。通过下载Odin Inspector 3.0.4版本和Unity3D文档类资源,开发者可以更加高效地使用Unity进行游戏开发,同时也可以获得更多的技术帮助和指导。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值