当前位置: 首页 > news >正文

2024-02-25 Unity 编辑器开发之编辑器拓展6 —— Event

文章目录

  • 1 Event 介绍
  • 2 重要 API
  • 3 代码示例

1 Event 介绍

​ Event 提供许多属性和方法,允许检查和处理用户输入,主要用于 Unity 编辑器拓展开发。

​ Input 相关内容需要在运行时才能监听输入,而 Event 专门提供给编辑模式下使用,可以帮助检测鼠标键盘输入等事件相关操作,在 OnGUI 和 OnSceneView 中都能使用。

2 重要 API

API说明
Event.current获取当前事件。
Event.current.altAlt 键是否按下。
Event.current.shiftShift 键是否按下 。
Event.current.controlCtrl 键是否按下。
Event.current.isMouse是否是鼠标事件。
Event.current.button判断鼠标左中右键,“0/1/2” 分别代表 “左/右/中”。
如果大于 2 可能是其他鼠标按键。
Event.current.mousePosition鼠标位置。
Event.current.isKey判断是否是键盘输入。
Event.current.character获取键盘输入的字符。
Event.current.keyCode获取键盘输入对应的 KeyCode。
Event.current.type判断输入类型。EventType 中有常用的:
1. 鼠标按下抬起拖拽;
2. 键盘按下抬起
等等类型,一般进行比较判断相关的操作。
Event.current.capsLock是否锁定大写 对应键盘上 Caps 键是否开启。
Event.current.commandWindows 键或 Command 键是否按下。
Event.current.commandName键盘事件字符串,用来判断是否触发了对应的键盘事件,返回值: Copy:拷贝;
Paste:粘贴;
Cut:剪切。
Event.current.delta鼠标间隔移动距离。
Event.current.functionKey是否是功能键输入,即小键盘中的
1. 方向键;
2. page up;
3. page down;
4. backspace
等等。
Event.current.numeric小键盘是否开启。
Event.current.Use()避免组合键冲突。
在处理完对应输入事件后,调用该方法,可以阻止事件继续派发,防止和 Unity 其他编辑器事件逻辑冲突。

​ 更多内容:https://docs.unity3d.com/ScriptReference/Event.html。

3 代码示例

public class Lesson21 : EditorWindow
{[MenuItem("Unity编辑器拓展/Lesson21/Event知识点学习")]private static void OpenLesson21() {Lesson21 win = EditorWindow.GetWindow<Lesson21>("Event知识学习");win.Show();}private void OnGUI() {//1.获取当前事件//  Event.currentEvent eve = Event.current;//2.alt键是否按下//  Event.current.altif (eve.alt)Debug.Log("alt键按下了");//3.shift键是否按下//  Event.current.shiftif (eve.shift)Debug.Log("shift键按下了");//4.ctrl键是否按下//  Event.current.controlif (eve.control)Debug.Log("control键按下了");//5.是否是鼠标事件//  Event.current.isMouseif (eve.isMouse) {Debug.Log("鼠标相关事件");//6.判断鼠标左中右键//  Event.current.button (0,1,2 分别代表 左,右,中 如果大于2可能是其他鼠标按键)Debug.Log(eve.button);//7.鼠标位置//  Event.current.mousePositionDebug.Log("鼠标位置" + eve.mousePosition);}//8.判断是否是键盘输入//  Event.current.isKeyif (eve.isKey) {Debug.Log("键盘相关事件");//9.获取键盘输入的字符//  Event.current.characterDebug.Log(eve.character);//10.获取键盘输入对应的KeyCode//  Event.current.keyCode//Debug.Log(eve.keyCode);switch (eve.keyCode) {case KeyCode.Space:Debug.Log("空格键输入");break;}}//11.判断输入类型//  Event.current.type// EventType枚举和它比较即可// EventType中有常用的 鼠标按下抬起拖拽,键盘按下抬起等等类型// 一般会配合它 来判断 比如 键盘 鼠标的抬起按下相关的操作//12.是否锁定大写 对应键盘上caps键是否开启//  Event.current.capsLockif (eve.capsLock)Debug.Log("大小写锁定开启");elseDebug.Log("大小写锁定关闭");//13.Windows键或Command键是否按下//  Event.current.commandif (eve.command)Debug.Log("PC win键按下 或 Mac Command键按下");//14.键盘事件 字符串//  Event.current.commandName// 可以用来判断是否触发了对应的键盘事件// 返回值:// Copy:拷贝// Paste:粘贴// Cut:剪切if (eve.commandName == "Copy") {Debug.Log("按下了ctrl + c");}if (eve.commandName == "Paste") {Debug.Log("按下了ctrl + v");}if (eve.commandName == "Cut") {Debug.Log("按下了ctrl + x");}//15.鼠标间隔移动距离//  Event.current.delta//Debug.Log(eve.delta);//16.是否是功能键输入//  Event.current.functionKey//  功能键指小键盘中的 方向键, page up, page down, backspace等等if (eve.functionKey)Debug.Log("有功能按键输入");//17.小键盘是否开启//  Event.current.numericif (eve.numeric)Debug.Log("小键盘是否开启");//18.避免组合键冲突//  Event.current.Use()//  在处理完对应输入事件后,调用该方法,可以阻止事件继续派发,放置和Unity其他编辑器事件逻辑冲突eve.Use();}
}
http://www.lryc.cn/news/308060.html

相关文章:

  • DC-DC降压芯片用于直流充电桩,具备3A的输出电流能力,输入电压6~40VDC——D2576
  • 4-如何进行细分市场的分析-02 细分行业的构成和基本情况
  • L1-023 输出GPLT(PTA)
  • 【JavaEE进阶】 Spring AOP快速上手
  • android应用开发基础知识,安卓面试2020
  • unity-unity2d基础操作笔记(一)0.5.0
  • 东芝工控机维修东芝电脑PC机维修FA3100A
  • AI新秀Mistral:“Open AI“ 新时代
  • Dockerfile制作镜像
  • 如何在宝塔面板中设置FTP文件传输服务并实现远程文件管理
  • 记录 | 设置容器内外时间一致
  • LeetCode 239 滑动窗口最大值
  • Vue单文件组件(SFC)规范
  • 简单版 git快速上手使用 clone项目 新建/切换分支 提交修改
  • 本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法
  • 【MySQL】_内连接
  • ElasticSearch之跨集群搜索cross cluster search
  • 06|Mysql内部组件结构
  • 文件的写出操作
  • 使用gitlab搭建npm的依赖库,并在项目中使用
  • 如何让电脑待机而wifi不关的操作方法!!
  • 如何在Spring Boot应用中进行文件预览?
  • 阿里云4核16G服务器多少钱?幻兽帕鲁配置报价
  • el-autocomplete 提示文字出不来?修改支持模糊搜索提示
  • CentOS8 同步时间chrony ntpdate已无法使用
  • NFS服务器挂载失败问题
  • (Linux学习二)文件管理基础操作命令笔记
  • Docker本地部署GPT聊天机器人并实现公网远程访问
  • html2canvas + JsPDF.js 导出pdf分页时的问题
  • Linux系统Docker部署StackEdit Markdown并实现公网访问本地编辑器