Unity在Editor下获取键盘等设备Input事件
前言
最近在做一个编辑器。需要自己设置快捷键的需求。但是经过测试。在Editor中并不能获取Input的事件。而用系统的[MenuItem("")]却必须要是静态的。而我们的编辑器脚本都为静态肯定也不现实。
所以需要自己获取设备输入事件。而input并没用。
解决方案
用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("快捷操作:减低播放速率"); } } } }
SetCurrent在哪调用的我发现 EditorApplication.update 并不能很好的监听点击事件,我有不想放在gameobject上面如果用 SceneView.onSceneGUIDelegat 移动出sence场景也不能监听了