Unity:输入系统(Input System)与持续检测键盘按键(Input.GetKey)

目录

Unity 的两套输入系统:

🔍 Input.GetKey 详解

🎯 对比:常用的输入检测方法

技术底层原理(简化版)

示例:角色移动 

为什么会被“新输入系统”替代?


Unity 的两套输入系统:

系统名称使用方式是否需要安装
旧输入系统UnityEngine.InputInput.GetKey()Input.GetAxis()❌ 不需要
新输入系统UnityEngine.InputSystemKeyboard.current.spaceKey.wasPressedThisFrame✅ 需要安装 Input System 包

Input.GetKey() 是 Unity 的旧输入系统(Old Input System)中用来检测键盘按键是否“持续按下”的方法。

Input.GetKey() 属于 Unity 的 旧版输入系统(Legacy Input System),也叫做:

✅ UnityEngine.Input

它来自 Unity 的核心命名空间:

using UnityEngine;

 而不是新的 Input System 包(那个要安装)。

 

🔍 Input.GetKey 详解

用法:

if (Input.GetKey(KeyCode.Space)) {// 玩家按住了空格键,执行跳跃蓄力
}

参数:

KeyCode 是 Unity 定义的一个枚举,包含了键盘上所有按键的标识:

KeyCode.A         // 字母 A 键
KeyCode.Space     // 空格键
KeyCode.LeftArrow // 左方向键
KeyCode.Return    // 回车键

🎯 对比:常用的输入检测方法

方法中文解释检测什么?类比
Input.GetKey(KeyCode.X)是否“持续”按下按键 X按着的时候每帧都为 true持续踩油门
Input.GetKeyDown(KeyCode.X)是否“在这一帧刚刚按下”按键 X只在按下的那一帧为 true点一下油门
Input.GetKeyUp(KeyCode.X)是否“在这一帧刚刚松开”按键 X只在松开的那一帧为 true抬脚松油门

技术底层原理(简化版)

在 Unity 的旧输入系统中:

  • Unity 会每帧读取当前操作系统的键盘状态

  • Input.GetKey() 就是访问这个“键盘状态快照”的一个函数

  • 它只在 MonoBehaviour 的 Update()FixedUpdate() 中有效

 ❗ 注意:你不能在 Awake()Start() 里用 GetKey(),因为那时候 Unity 还没开始检测输入帧。

示例:角色移动 

void Update() {if (Input.GetKey(KeyCode.RightArrow)) {transform.Translate(Vector2.right * speed * Time.deltaTime);}
}

这个例子做了什么?

  • 每帧检测玩家是否按住右方向键

  • 如果按住,就让角色持续向右移动

为什么会被“新输入系统”替代?

Unity 推出新的 Input System 原因:

旧输入系统的问题新系统的优势
不能支持多个输入设备(键盘 + 手柄 + 触屏)可以一次支持多个设备,统一映射
不支持自定义按键重映射可以创建用户配置的输入动作
不支持输入事件/异步支持事件驱动,响应更快
不支持多人本地输入支持多人同时使用不同设备

不过很多 2D 游戏和初学项目,用旧系统就很够用,而且更简单。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

港大今年开源了哪些SLAM算法?

过去的5个月,香港大学 MaRS 实验室陆续开源了四套面向无人机的在线 SLAM 框架:**FAST-LIVO2 、Point-LIO(grid-map 分支) 、Voxel-SLAM 、Swarm-LIO2 **。这四套框架覆盖了单机三传感器融合、高带宽高速机动、长时间多级地图优化以…

【质量管理】TRIZ因果链分析:解码质量问题的“多米诺效应“

为什么要使用因果链分析 没有发现问题并不等于没有问题。爱因斯坦曾说,如果我只有一个小时的时间来拯救世界,我将花45分钟时间分析问题,10分钟的时间来检查问题,最后5分钟的时间来解决问题。可见问题分析的重要性。 在质量管理实践…

线程中常用的方法

知识点详细说明 Java线程的核心方法集中在Thread类和Object类中,以下是新增整合后的常用方法分类解析: 1. 线程生命周期控制 方法作用注意事项start()启动新线程,JVM调用run()方法多次调用会抛出IllegalThreadStateException(线程状态不可逆)。run()线程的任务逻辑直接调…

c++:迭代器(Iterator)

目录 🚪什么是迭代器? 🔧 迭代器的本质 为什么不用普通数组或下标? STL容器的迭代器并不是共用一个类型! 迭代器的类型(Iterator Categories) 📦 常见容器的迭代器类型 ✅ 迭…

【文件系统—散列结构文件】

文章目录 一、实验目的实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解linux文件系统的内部技术,掌握linux与文件有关的系统调用命令,并在此基础上建立面向随机检索的散列结构文件;## 二、实验内容与设计思想 实验内容 1.设…

力扣26——删除有序数组中的重复项

目录 1.题目描述: 2.算法分析: 3.代码展示: 1.题目描述: 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对…

ggplot2 | GO barplot with gene list

1. 效果图 2. 代码 数据是GO的输出结果,本文使用的是 metascape 输出的excel挑选的若干行。 # 1. 读取数据 datread.csv("E:\\research\\scPolyA-seq2\\GO-APA-Timepoint\\test.csv", sep"\t") head(dat)# 2. 选择所需要的列 dat.usedat[, c(…

学习搭子,秘塔AI搜索

什么是秘塔AI搜索 《秘塔AI搜索》的网址:https://metaso.cn/ 功能:AI搜索和知识学习,其中学习部分是亮点,也是主要推荐理由。对应的入口:https://metaso.cn/study 推荐理由 界面细节做工精良《今天学点啥》板块的知…

【C语言】--指针超详解(三)

目录 一.数组名的理解 二.使用指针访问数组 三.一维数组传参的本质 四.冒泡排序 五.二级指针 六.指针数组 6.1--指针数组的定义 6.2--指针数组模拟二维数组 🔥个人主页:草莓熊Lotso的个人主页 🎬作者简介:C方向学习者 &…

Linux防火墙

1.防火墙是一种位于内部网络与外部网络之间的网络安全系统,它依照特定的规则,允许或限制传输的数据通过,以保护内部网络的安全。以下从功能、分类、工作原理等方面为你详细讲解: 功能访问控制:这是防火墙最主要的功能。…

嵌入式培训之C语言学习完(十七)结构体、共用体、枚举、typedef关键字与位运算

目录 一、结构体(struct关键字) (一)声明一个结构体数据类型 (二)结构体的成员初始化与赋值 a、结构体变量赋值 b、结构体成员初始化 c、结构体的定义形式 (三)考点&#xff…

Python字典:数据操作的核心容器

在Python编程生态中,字典(dict)是最常用且功能强大的内置数据结构之一。它以键值对(Key-Value Pair)的形式存储数据,为快速查找、灵活映射关系提供了天然支持。无论是数据清洗、算法实现还是Web开发&#x…

按位宽提取十六进制值

需求:给出一个十六进制值,要求提取high和low位之间的值。比如16ha0f0,这是一个16bit宽的十六进制数0xa0f0,提取[15:12]范围内的值。 def extract_bits(value, high, low):"""从 value 中提取 [high:low] 位的值:p…

LeRobot 项目部署运行逻辑(六)——visualize_dataset_html.py/visualize_dataset.py

可视化脚本包括了两个方法:远程下载 huggingface 上的数据集和使用本地数据集 脚本主要使用两个: 目前来说,ACT 采集训练用的是统一时间长度的数据集,此外,这两个脚本最大的问题在于不能裁剪,这也是比较好…

SSTI模版注入

1、概念 SSTI是一种常见的Web安全漏洞,它允许攻击者通过注入恶意模板代码,使服务器在渲染模板时执行非预期的操作。 (1)渲染模版 至于什么是渲染模版:服务器端渲染模板是一种Web开发技术,它允许在服务器端…

关于点胶机的精度

一、精度: 1:X/y轴定位精度常通在5个丝左右,Z轴在3个丝左右, 如果采用伺服电机丝杆配置,可提升至于个2丝左右。 2:胶水控制精度:通过喷阀驱动器,气压等参数,实现胶量控制&#xf…

gitee推送更新失败问题记录:remote: error: hook declined to update refs/heads/master

问题描述: gitee推送更新时,提示: 解决方法: 登录Gitee,进入【个人主页】 点击【个人设置】 更改邮箱的配置,如下: 更改“禁止命令行推送暴露个人邮箱”,将其关闭:

Java如何获取电脑分辨率?

以下是一个 Java 程序示例,用于获取电脑的主屏幕分辨率: import java.awt.*; public class ScreenResolutionExample { public static void main(String[] args) { // 获取默认的屏幕设备 GraphicsDevice device GraphicsEnvironm…

WPF 3D图形编程核心技术解析

一、三维坐标系系统 WPF采用右手坐标系系统,空间定位遵循: X 轴 → 右 Y 轴 → 上 Z 轴 → 观察方向 X轴 \rightarrow 右\quad Y轴 \rightarrow 上\quad Z轴 \rightarrow 观察方向 X轴→右Y轴→上Z轴→观察方向 三维坐标值表示为 ( x , y , z ) (x, y,…

【库(Library)、包(Package)和模块(Module)解析】

在Python中,**库(Library)、包(Package)和模块(Module)**是代码组织的不同层级,而import语句的导入行为与它们密切相关。以下是详细对比和解释: 📦 1. 核心概…