Unity在Editor下获取键盘等设备Input事件

前言

最近在做一个编辑器。需要自己设置快捷键的需求。但是经过测试。在Editor中并不能获取Input的事件。而用系统的[MenuItem("")]却必须要是静态的。而我们的编辑器脚本都为静态肯定也不现实。

所以需要自己获取设备输入事件。而input并没用。

1

解决方案

用Event事件能获取到所有设备输入信息。

使用方法如下

    bool isSpaceDown;
    /// <summary> 设置快捷操作 </summary>
    void SetCurrent()
    {
        Event e = Event.current;
        if (e.isKey)
        {
            if(e.keyCode == KeyCode.Space)
            {
                isSpaceDown = e.type == EventType.keyUp ? false : true;
            }
            if (e.type == EventType.keyUp)
            {
                if (e.keyCode == KeyCode.A && isSpaceDown)
                 {
                     Debug.LogError("快捷操作:重置");
                 }
                 else if(e.keyCode == KeyCode.Return)
                 {
                     Debug.LogError("快捷操作:暂停");
                 }
                else if (e.keyCode == KeyCode.S && isSpaceDown)
                 {
                     Debug.LogError("快捷操作:保存");
                 }
            }
            else if(e.type == EventType.keyDown)
            {
                
                if (e.keyCode == KeyCode.UpArrow)
                {
                    Debug.LogError("快捷操作:加快播放速率");
                }
                else if (e.keyCode == KeyCode.DownArrow)
                {
                    Debug.LogError("快捷操作:减低播放速率");
                }
            }
        }
    }

 

 

本文链接:

https://bobsong.cn/945.html
1 + 5 =
1 评论
    soonFirefox Browser 84Windows 10
    2021年01月20日 回复

    SetCurrent在哪调用的我发现 EditorApplication.update 并不能很好的监听点击事件,我有不想放在gameobject上面如果用 SceneView.onSceneGUIDelegat 移动出sence场景也不能监听了