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.pswp.cn/diannao/82327.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82327.shtml
英文地址,請注明出處:http://en.pswp.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. 核心概…