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 游戏和初学项目,用旧系统就很够用,而且更简单。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值