当前位置: 首页 > 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();}
}

相关文章:

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

文章目录 1 Event 介绍2 重要 API3 代码示例 1 Event 介绍 ​ Event 提供许多属性和方法&#xff0c;允许检查和处理用户输入&#xff0c;主要用于 Unity 编辑器拓展开发。 ​ Input 相关内容需要在运行时才能监听输入&#xff0c;而 Event 专门提供给编辑模式下使用&#xf…...

DC-DC降压芯片用于直流充电桩,具备3A的输出电流能力,输入电压6~40VDC——D2576

随着新能源汽车的不断普及&#xff0c;如何解决新能源车充电的问题也成为大热话题&#xff0c;充电桩的数量与质量也是目前急需提升的热门方面&#xff0c;现阶段人们需要的充电桩主要有交流充电桩和直流充电桩&#xff0c;直流充电桩因其节能效率高、功率因数高、充电快、逐渐…...

4-如何进行细分市场的分析-02 细分行业的构成和基本情况

如何快速摸清行业的构成&#xff0c;通常会看同行或自己做过的相似的行业&#xff0c;会根据不同的行业来采用不同的研究方法。对于成熟的行业和不同的行业都会有一些比较通用的研究方式。 假设我们是在分析某一个行业&#xff0c;在分析行业的时候它的本质还是市场分析&#…...

L1-023 输出GPLT(PTA)

文章目录 输出GPLT题目描述代码 输出GPLT 题目描述 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序&#xff0c;按GPLTGPLT…这样的顺序输出&#xff0c;并忽略其它字符。当然&#xff0c;四种字符&#xff08;不区分大小写&#xff09;的个数不…...

【JavaEE进阶】 Spring AOP快速上手

文章目录 &#x1f343;什么是AOP&#x1f333;什么是Spring AOP&#x1f334;上手Spring AOP&#x1f6a9;引入依赖&#x1f6a9;编写AOP程序 ⭕总结 &#x1f343;什么是AOP AOP是Aspect Oriented Programming的简称&#xff08;又称为面向切⾯编程&#xff09; 什么是面向…...

android应用开发基础知识,安卓面试2020

第一章&#xff1a;设计思想与代码质量优化 1、设计思想六大原则 2、三大设计模式 3、数据结构 4、算法 第二章&#xff1a;程序性能优化 1、启动速度和执行效率优化 2、布局检测与优化 3、内存优化 4、耗电优化 5、网络传输与数据存储优化 6、APK大小优化 7、屏幕适配 8、…...

unity-unity2d基础操作笔记(一)0.5.0

unity2d基础操作笔记 一、如何查看当前系统的输入设置二、如何获取水平或者垂直的输入的代码三、如何获取当前人物的x和y的值三、如何简单写出控制人物水平移动的代码四、如何设定游戏的帧率五、如何控制渲染顺序六、如何调整摄像机摄像范围大小七、如何对Hierachy中的图进行分…...

东芝工控机维修东芝电脑PC机维修FA3100A

TOSHIBA东芝工控机维修电脑控制器PC机FA3100A MODEL8000 UF8A11M 日本东芝TOSHIBA IA controller维修SYU7209A 001 FXMC12/FXMC11;BV86R-T2GKR-DR7YF-8CPPY-4T3QD; CPU处理单元是可编程逻辑控制器的控制部分。它按照可编程逻辑控制器系统程序赋予的功能接收并存储从编程器键入…...

AI新秀Mistral:“Open AI“ 新时代

最近互联网出现不少类似“下一代openai”、“GPT-4最强竞品”、“法国AI独角兽”、“欧洲的OpenAI”、“微软新宠儿”.... 的文章&#xff0c;都会附带一张图片&#xff0c;就是下面这张&#xff1a; 那么到底发生了什么&#xff0c;出来个什么东西呢&#xff1f;就是本文的主…...

Dockerfile制作镜像

Dockerfile制作镜像 Dockerfile介绍 dockerfile 是一个用来构建镜像的文本文件&#xff0c;文本内容包含了一条条构建镜像所需的指令和说明。 dockerfile仅仅是用来制作镜像的源码文件&#xff0c;是构建容器过程中的指令&#xff0c;docker能够读取dockerfile的指定进行自动…...

如何在宝塔面板中设置FTP文件传输服务并实现远程文件管理

文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能&#xff0c;用于设置和管理FTP服务。通过宝塔FTP&#xff0c;用户可以创建FTP账号&#xff0c;配置FTP用户权限…...

记录 | 设置容器内外时间一致

1.共享主机的localtime 创建容器的时候指定启动参数&#xff0c;挂载localtime文件到容器内&#xff0c;保证两者所采用的时区是一致的 docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro docker.io/nginx /bin/bash 2.复制主机的localtime docker …...

LeetCode 239 滑动窗口最大值

LeetCode 239 滑动窗口最大值 问题描述 给定一个整数数组 nums 和一个整数 k&#xff0c;定义一个大小为 k 的滑动窗口&#xff0c;该窗口从数组的最左侧移动到最右侧。你可以看到在滑动窗口内的 k 个数字&#xff0c;并返回滑动窗口中的最大值。 解题思路 我们可以利用一个…...

Vue单文件组件(SFC)规范

Vue 单文件组件 (SFC) 规范 文件地址&#xff1a;Vue单文件组件规范 简介 .vue 文件是一个自定义的文件类型&#xff0c;用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 <template>、<script> 和 <style>&#xff0c;还允许添加…...

简单版 git快速上手使用 clone项目 新建/切换分支 提交修改

Git是一个广泛使用的版本控制系统&#xff0c;允许多个用户跟踪文件的更改&#xff0c;并协作开发项目。 首先确定自己电脑已经安装了git&#xff0c;具体安装步骤请查找教程&#xff0c;应该不难。 以windows电脑为例&#xff0c;安装完后在搜索栏搜索git会出现 先解释一下这…...

本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法

aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。 方案介绍 本届挑战赛采用开放式赛题&#xff0c;基于建行云龙舟运维平台的稳定性工具和多维监控系统&#xff0c;模拟大型的生活服务APP的生产环境&#xff0c;提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组…...

【MySQL】_内连接

本专栏关于联合查询已建好相应库与表&#xff0c;链接如下&#xff1a; 【MySQL】_联合查询基础表-CSDN博客 基于以上库与表&#xff0c;本篇介绍内连接&#xff1b; 内连接表示语法有两种&#xff1a; 第一种&#xff1a; select [列名],[列名]... form [表1],[表2] where…...

ElasticSearch之跨集群搜索cross cluster search

写在前面 本文看下跨集群搜索相关内容。 1&#xff1a;实战 1.1&#xff1a;创建集群 bin/elasticsearch -E node.namecluster0node -E cluster.namecluster0 -E path.datacluster0_data -E discovery.typesingle-node -E http.port9200 -E transport.port9300 bin/elastic…...

06|Mysql内部组件结构

1. 连接器 客户端要向mysql发起通信都必须先跟Server端建立通信连接&#xff0c;而建立连接的工作就是由连接器完成的 mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306连接步骤: 1、如果用户名或密码不对&#xff0c;你就会收到一个"Access denied for us…...

文件的写出操作

1. 文件不存在&#xff0c;创建文件后写出方法: <1>打开文件&#xff1a;open()方法是文件不存在时创建文件 file open("D:/test.txt","w",encoding"UTF-8")<2>写出文件: file.write("please open your book") #内容写到内…...

从零到一:手把手教你用OpenVINS跑通INDEMIND双目VIO(附避坑指南)

从零到一&#xff1a;手把手教你用OpenVINS跑通INDEMIND双目VIO&#xff08;附避坑指南&#xff09; 最近在机器人定位领域&#xff0c;基于视觉惯性里程计&#xff08;VIO&#xff09;的方案越来越受到关注。作为一个在多个实际项目中部署过VIO系统的开发者&#xff0c;我发现…...

AssetRipper终极指南:如何轻松提取Unity游戏资源的完整教程

AssetRipper终极指南&#xff1a;如何轻松提取Unity游戏资源的完整教程 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 还在为无法获取…...

元数据管理难实现?看这一篇就足够

很多企业一提到元数据管理&#xff0c;第一反应都是平台、架构、上云、同步、治理&#xff0c;听起来方向都对&#xff0c;但真正推进起来&#xff0c;往往很容易卡住。系统越来越多&#xff0c;数据源越来越杂&#xff0c;链路一拉长&#xff0c;数据到底从哪来、被谁加工、给…...

不只是仿真:解锁Icarus Verilog (iverilog) 在Windows上的三个隐藏用法(语法检查/转VHDL/库管理)

解锁Icarus Verilog在Windows中的高阶应用&#xff1a;从语法检查到混合语言开发 在数字电路设计领域&#xff0c;Verilog作为主流硬件描述语言之一&#xff0c;其开发工具链的灵活运用往往能大幅提升工作效率。虽然大多数工程师熟悉Icarus Verilog&#xff08;iverilog&#x…...

代码异味检测进入“生成式时代”:GPT-4o输出代码的3大隐性技术债,现在不查,Q3重构预算翻倍

第一章&#xff1a;代码异味检测进入“生成式时代”&#xff1a;GPT-4o输出代码的3大隐性技术债&#xff0c;现在不查&#xff0c;Q3重构预算翻倍 2026奇点智能技术大会(https://ml-summit.org) 当工程师在IDE中按下CtrlEnter接受GPT-4o生成的50行Go函数时&#xff0c;他们往…...

fft npainting lama图片修复系统使用教程:从上传到修复全流程

fft npainting lama图片修复系统使用教程&#xff1a;从上传到修复全流程 1. 引言&#xff1a;让图片修复变得像涂鸦一样简单 你有没有遇到过这样的烦恼&#xff1f;一张完美的风景照&#xff0c;偏偏有个路人闯进了镜头&#xff1b;一张珍贵的合影&#xff0c;上面却有个碍眼…...

终极指南:5个技巧快速搭建Windows免费Syslog服务器

终极指南&#xff1a;5个技巧快速搭建Windows免费Syslog服务器 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 还在为网络设备日志分散管理而烦恼吗&#xff1f;…...

别再只会用默认样式了!用matplotlib的boxplot函数,5分钟定制你的专属箱线图

别再只会用默认样式了&#xff01;用matplotlib的boxplot函数&#xff0c;5分钟定制你的专属箱线图 第一次用matplotlib画箱线图时&#xff0c;我盯着那个灰头土脸的方盒子看了半天——这玩意儿真的能放进报告里&#xff1f;后来才发现&#xff0c;boxplot()藏着无数宝藏参数&a…...

突破限制:百度网盘直链解析工具助你实现高速下载

突破限制&#xff1a;百度网盘直链解析工具助你实现高速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘下载速度慢而烦恼吗&#xff1f;&#x1f680; 今天…...

intv_ai_mk11稳定可靠:温度=0时通用问答任务100%可复现结果实测

intv_ai_mk11稳定可靠&#xff1a;温度0时通用问答任务100%可复现结果实测 1. 模型介绍与实测背景 intv_ai_mk11是基于Llama架构开发的中等规模文本生成模型&#xff0c;特别适合处理通用问答、文本改写、解释说明等任务。与常见的大模型不同&#xff0c;这个镜像版本经过特殊…...