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.alt | Alt 键是否按下。 |
| Event.current.shift | Shift 键是否按下 。 |
| Event.current.control | Ctrl 键是否按下。 |
| 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.command | Windows 键或 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 提供许多属性和方法,允许检查和处理用户输入,主要用于 Unity 编辑器拓展开发。 Input 相关内容需要在运行时才能监听输入,而 Event 专门提供给编辑模式下使用…...
DC-DC降压芯片用于直流充电桩,具备3A的输出电流能力,输入电压6~40VDC——D2576
随着新能源汽车的不断普及,如何解决新能源车充电的问题也成为大热话题,充电桩的数量与质量也是目前急需提升的热门方面,现阶段人们需要的充电桩主要有交流充电桩和直流充电桩,直流充电桩因其节能效率高、功率因数高、充电快、逐渐…...
4-如何进行细分市场的分析-02 细分行业的构成和基本情况
如何快速摸清行业的构成,通常会看同行或自己做过的相似的行业,会根据不同的行业来采用不同的研究方法。对于成熟的行业和不同的行业都会有一些比较通用的研究方式。 假设我们是在分析某一个行业,在分析行业的时候它的本质还是市场分析&#…...
L1-023 输出GPLT(PTA)
文章目录 输出GPLT题目描述代码 输出GPLT 题目描述 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不…...
【JavaEE进阶】 Spring AOP快速上手
文章目录 🍃什么是AOP🌳什么是Spring AOP🌴上手Spring AOP🚩引入依赖🚩编写AOP程序 ⭕总结 🍃什么是AOP AOP是Aspect Oriented Programming的简称(又称为面向切⾯编程) 什么是面向…...
android应用开发基础知识,安卓面试2020
第一章:设计思想与代码质量优化 1、设计思想六大原则 2、三大设计模式 3、数据结构 4、算法 第二章:程序性能优化 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”、“微软新宠儿”.... 的文章,都会附带一张图片,就是下面这张: 那么到底发生了什么,出来个什么东西呢?就是本文的主…...
Dockerfile制作镜像
Dockerfile制作镜像 Dockerfile介绍 dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动…...
如何在宝塔面板中设置FTP文件传输服务并实现远程文件管理
文章目录 1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 宝塔FTP是宝塔面板中的一项功能,用于设置和管理FTP服务。通过宝塔FTP,用户可以创建FTP账号,配置FTP用户权限…...
记录 | 设置容器内外时间一致
1.共享主机的localtime 创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的 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,定义一个大小为 k 的滑动窗口,该窗口从数组的最左侧移动到最右侧。你可以看到在滑动窗口内的 k 个数字,并返回滑动窗口中的最大值。 解题思路 我们可以利用一个…...
Vue单文件组件(SFC)规范
Vue 单文件组件 (SFC) 规范 文件地址:Vue单文件组件规范 简介 .vue 文件是一个自定义的文件类型,用类 HTML 语法描述一个 Vue 组件。每个 .vue 文件包含三种类型的顶级语言块 <template>、<script> 和 <style>,还允许添加…...
简单版 git快速上手使用 clone项目 新建/切换分支 提交修改
Git是一个广泛使用的版本控制系统,允许多个用户跟踪文件的更改,并协作开发项目。 首先确定自己电脑已经安装了git,具体安装步骤请查找教程,应该不难。 以windows电脑为例,安装完后在搜索栏搜索git会出现 先解释一下这…...
本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法
aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。 方案介绍 本届挑战赛采用开放式赛题,基于建行云龙舟运维平台的稳定性工具和多维监控系统,模拟大型的生活服务APP的生产环境,提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组…...
【MySQL】_内连接
本专栏关于联合查询已建好相应库与表,链接如下: 【MySQL】_联合查询基础表-CSDN博客 基于以上库与表,本篇介绍内连接; 内连接表示语法有两种: 第一种: select [列名],[列名]... form [表1],[表2] where…...
ElasticSearch之跨集群搜索cross cluster search
写在前面 本文看下跨集群搜索相关内容。 1:实战 1.1:创建集群 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端建立通信连接,而建立连接的工作就是由连接器完成的 mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306连接步骤: 1、如果用户名或密码不对,你就会收到一个"Access denied for us…...
文件的写出操作
1. 文件不存在,创建文件后写出方法: <1>打开文件:open()方法是文件不存在时创建文件 file open("D:/test.txt","w",encoding"UTF-8")<2>写出文件: file.write("please open your book") #内容写到内…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
嵌入式面试常问问题
以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...
【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
EEG-fNIRS联合成像在跨频率耦合研究中的创新应用
摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...
用 FFmpeg 实现 RTMP 推流直播
RTMP(Real-Time Messaging Protocol) 是直播行业中常用的传输协议。 一般来说,直播服务商会给你: ✅ 一个 RTMP 推流地址(你推视频上去) ✅ 一个 HLS 或 FLV 拉流地址(观众观看用)…...
