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

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.xdnf.cn/news/4090.html

相关文章:

  • android-ndk开发(5): 编译运行 hello-world
  • 【C++类】序幕
  • 【SpringBoot篇】详解短信验证码登录功能实现
  • C与指针——常见库函数
  • 【Linux】进程控制
  • linux inotify 资源详解
  • 数据结构之二叉树(4)
  • 一款基于 .NET 开源的多功能的 B 站视频下载工具
  • vulkanscenegraph显示倾斜模型(6.5)-vsg::DatabasePager
  • 网络安全自动化:精准把握自动化边界,筑牢企业安全防
  • 拷贝多个Excel单元格区域为图片并粘贴到Word
  • 谷歌最新推出的Gemini 2.5 Flash人工智能模型因其安全性能相较前代产品出现下滑
  • nginx面试题
  • 物联网之对接MQTT最佳实践
  • CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.10 二叉搜索树
  • 【将你的IDAPython插件迁移到IDA 9.x:核心API变更与升级指南】
  • WSL 安装 Debian 后,apt get 如何更改到国内镜像网址?
  • C++笔记之委托
  • 利用迁移学习实现食物分类:基于PyTorch与ResNet18的实战案例
  • 【蓝牙协议栈】【BR/EDR】【AVCTP】精讲音视频控制传输协议
  • 分享一个Android中文汉字手写输入法并带有形近字联想功能
  • Baklib驱动企业知识管理AI升级
  • day15 python 复习日
  • 复杂网络系列:第 5 部分 — 社区检测和子图
  • 在写setup时遇到的问题与思考
  • Circular Plot系列(一): 环形热图绘制
  • 《马小帅的Java闯关记》
  • 模型部署与提供服务
  • QpushButton 扩展InteractiveButtonBase
  • k230摄像头初始化配置函数解析