当前位置: 首页 > 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") #内容写到内…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器&#xff0c;用于保存可变的数据值。在Java中&#xff0c;变量必须先声明后使用&#xff0c;声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例&#xff1a;声明与初始化 public class VariableDemo {publi…...