Unity Input类以及获取键盘键位的值

本文详细介绍了Unity中获取鼠标、键盘和手柄输入的方法,包括Input.GetMouseButtonDown、GetMouseButtonUp、GetKey等函数的用法,并列举了各种键位的对应名称,如键盘的F1-F15、方向键、字母键以及手柄的各种按键,为游戏开发中的用户交互提供了清晰的参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般使用的input类是用来获取鼠标和键盘的
获取鼠标
括号里写0、1、2,分别代表鼠标左键,鼠标右键,鼠标滑轮。
Input.GetMouseButtonDown();//获取鼠标按下
Input.GetMouseButtonUp();//获取鼠标抬起
获取键盘
Input.GetKey("键位名"或 例如KeyCode.A);//获取键位
Input.GetKeyDown();//获取键位按下
Input.GetKeyUp();//获取键位抬起

有时候使用Input方法获取键盘键位,会不知道对应的是哪个
今天在这里给大家列举出来

值 对应键
Backspace 退格键
Delete Delete键
Tab TabTab键
Clear Clear键
Return 回车键
Pause 暂停键
Escape ESC键
Space 空格键
Keypad0 小键盘0
Keypad1 小键盘1
Keypad2 小键盘2
Keypad3 小键盘3
Keypad4 小键盘4
Keypad5 小键盘5
Keypad6 小键盘6
Keypad7 小键盘7
Keypad8 小键盘8
Keypad9 小键盘9
KeypadPeriod 小键盘“.”
KeypadDivide 小键盘“/”
KeypadMultiply小键盘“*”
KeypadMinus 小键盘“-”
KeypadPlus 小键盘“+”
KeypadEnter 小键盘“Enter”
KeypadEquals 小键盘“=”
UpArrow 方向键上
DownArrow 方向键下
RightArro

### 如何在 Unity获取键盘输入 #### 使用 `Input` 检测特定键的按下状态 对于简单的键盘输入检测,可以直接利用 Unity 的内置 `Input` 来判断某个按键是否被按下: ```csharp void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("Space key was pressed"); } } ``` 这段代码会在每次更新循环中检查空格键(`KeyCode.Space`) 是否刚刚被按下。如果是,则会打印一条消息到控制台[^1]。 #### 利用字符串名称匹配键位 除了使用枚举型的 `KeyCode` 来表示具体按键外,还可以通过传递相应的字符串名给 `GetKey()` 方法来进行更灵活的操作: ```csharp if (Input.GetKey("w")) { Debug.Log("W key is being held down."); } if (Input.GetKeyUp("s")) { Debug.Log("S key has been released."); } ``` 这展示了如何捕捉持续按住以及释放指定字符键的情况[^3]。 #### 获取轴向输入用于角色移动等场景 针对需要连续变化的方向性输入(如玩家操控的角色行走),通常建议采用 `GetAxis()` 函数配合预定义好的虚拟轴配置文件一起工作: ```csharp float horizontalMovement = Input.GetAxis("Horizontal"); // A/D 或 左右箭头 float verticalMovement = Input.GetAxis("Vertical"); // W/S 或 上下箭头 Debug.Log($"Moving Horizontally: {horizontalMovement}, Vertically: {verticalMovement}"); ``` 此方法能够提供平滑过渡的效果,并支持摇杆设备作为替代输入源。 #### 新版 Input System API 示例 考虑到未来兼容性和功能扩展的需求,在较新的项目可能更适合选用新版的 Input System 插件及其提供的接口实现相同的功能: ```csharp using UnityEngine; using UnityEngine.InputSystem; public class PlayerController : MonoBehaviour { private void OnMove(InputValue value) { Vector2 movementVector = value.Get<Vector2>(); Debug.Log($"Player moving with vector ({movementVector.x},{movementVector.y})"); } public void Start() { Controls.Player.Move.performed += ctx => OnMove(ctx); } private void OnDestroy() { Controls.Player.Move.performed -= ctx => OnMove(ctx); } } ``` 上述例子假设已经设置好了自定义的动作映射方案,并注册了对应的回调函数去响应用户的交互行为[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值