Unity基礎學習(九)輸入系統全解析:鼠標、鍵盤與軸控制

目錄

一、Input類

1. 鼠標輸入

2. 鍵盤輸入

3. 默認軸輸入

(1) 基礎參數

(2)按鍵綁定參數

(3)輸入響應參數

(4)輸入類型與設備參數

(5)不同類型軸的參數差異

4. 其他輸入設備

二、屏幕相關

Unity Screen 類常用功能總結


一、Input類

1. 鼠標輸入

  • 位置獲取
    Input.mousePosition:返回屏幕坐標(左下角為原點,x向右,y向上,z始終為0)。

  • 按鍵檢測

    GetMouseButtonDown(0/1/2):左鍵/右鍵/中鍵按下瞬間觸發

    GetMouseButtonUp(0/1/2):按鍵抬起時觸發

    GetMouseButton(0/1/2):按鍵持續按住時觸發

  • 滾輪檢測
    Input.mouseScrollDelta:y值為1(向上滾動)或-1(向下滾動),用于控制縮放或頁面滾動。

2. 鍵盤輸入

  • 按鍵檢測

    GetKeyDown(KeyCode.W)/GetKeyDown("q"):按下瞬間觸發(字符串需小寫)。

    GetKeyUp(KeyCode.W)抬起時觸發

    GetKey(KeyCode.W)持續按住時觸發

    想什么鍵就KeyCode.出來使用,這里面是一個枚舉類型,枚舉了所有的按鍵。

  • 組合鍵:需自行檢測多鍵狀態,如?if (Input.GetKey(KeyCode.LeftControl) && Input.GetKeyDown(KeyCode.C))

3. 默認軸輸入

這個軸在這里看:Edit->Project Setting->Input Manager

????????這個軸是什么呢?在 Unity 的 Input Manager 中,軸(Axes)?是一組預定義的輸入配置,用于抽象化不同的輸入設備(如鍵盤、鼠標、手柄)的操作。

????????如果你想自己添加額外的軸,你直接將上面的Size進行改動即可?

這里是對上面的介紹:

軸名稱作用默認輸入鍵代碼示例
Horizontal控制左右方向(如角色移動、菜單選擇)鍵盤?A/D、手柄左搖桿左右Input.GetAxis("Horizontal")
Vertical控制上下方向(如角色移動、菜單選擇)鍵盤?W/S、手柄左搖桿上下Input.GetAxis("Vertical")
Fire1觸發攻擊、交互等動作鼠標左鍵、鍵盤?Ctrl、手柄?X?鍵Input.GetButton("Fire1")
Fire2次要攻擊或特殊技能(如射擊游戲中的瞄準)鼠標右鍵、鍵盤?Alt、手柄?Y?鍵Input.GetButton("Fire2")
Fire3備用功能(如手雷或道具使用)鍵盤?Space、手柄?B?鍵Input.GetButton("Fire3")
Jump跳躍動作鍵盤?Space、手柄?A?鍵Input.GetButtonDown("Jump")
Mouse X鼠標橫向移動(控制視角左右旋轉)鼠標左右移動Input.GetAxis("Mouse X")
Mouse Y鼠標縱向移動(控制視角上下旋轉)鼠標上下移動Input.GetAxis("Mouse Y")
Mouse ScrollWheel鼠標滾輪滾動(如縮放鏡頭、切換武器)鼠標滾輪Input.GetAxis("Mouse ScrollWheel")
Submit確認操作(如菜單按鈕點擊)鍵盤?Enter、手柄?Start?鍵Input.GetButtonDown("Submit")
Cancel取消操作(如返回上一級菜單)鍵盤?Esc、手柄?Back?鍵Input.GetButtonDown("Cancel")

?隨便點擊一個軸,可以看出里面有很多參數:

所以我們來看看這些參數是什么:

(1) 基礎參數

????????Name:

????????作用:軸的唯一標識符,代碼中通過?Input.GetAxis("軸名")?或?Input.GetButton("軸名")?調用。通用性:所有軸必填,需唯一。例如?Horizontal、Fire1、Mouse X。

Descriptive Name / Negative Descriptive Name

作用:編輯器中的顯示名稱(僅用于界面提示,不影響功能)。通用性:所有軸可選,通常留空。


(2)按鍵綁定參數

????????Negative Button / Positive Button

????????作用:負方向(減少值)和正方向(增加值)的按鍵綁定。

????????適用軸類型

????????按鍵觸發軸(如?Fire1):通常只綁定一個鍵(如?Ctrl),負按鈕可能留空。

????????連續軸(如?Horizontal):綁定?A/D?或?←/→

注意:某些軸(如?Mouse X)可能不需要手動綁定按鍵(由輸入類型決定)。

????????Alt Negative Button / Alt Positive Button

作用:備用按鍵綁定(兼容多設備或鍵位布局)。

示例Horizontal?可同時支持方向鍵?←/→?和?A/D適用性:僅對需要多鍵位支持的軸有意義(如移動、菜單操作)。

? ? ? ? 小結:就是說,Unity會識別你上面這兩種輸入方式,只要滿足一種,就都會判定為是軸觸發。主按鍵(Negative/Positive Button)和備用按鍵(Alt Negative/Alt Positive Button)是并行生效的,沒有優先級差異。


(3)輸入響應參數

????????Gravity

作用:松開按鍵后,軸值歸零的速度(單位:單位/秒)。

通用性

按鍵觸發軸(如?Jump):通常無效(按鍵是瞬時觸發)。

連續軸(如?Horizontal):模擬慣性停止(如角色滑行)。

默認值3(數值越大,歸零越快)。

????????Dead

????????作用:輸入死區范圍,忽略微小值(防止搖桿漂移或鍵盤抖動)。

通用性鍵盤/鼠標:通常設為?0.001(避免誤觸發)。

手柄搖桿:必填(如?0.2?表示搖桿偏移小于 20% 時不響應)。

Sensitivity

????????作用:輸入靈敏度,控制軸值變化速度(單位:單位/秒)。

通用性

按鍵觸發軸(如?Fire1):通常無效(按鍵是開關式輸入)。

連續軸(如?Mouse X):數值越大,輸入響應越快(如?3?表示每秒達到最大值)。

Snap(?)

????????作用:同時按下正負方向按鍵時,軸值立即歸零。適用場景:角色移動中按?A+D?時停止。通用性:僅對需要方向沖突處理的軸有意義(如?HorizontalVertical)。

Invert(?)

????????作用:反轉輸入方向(正負值互換)。示例:默認?Mouse Y?向上移動為正值,勾選后向下移動為正值。通用性:適用于需要反向操作的軸(如視角控制)。


(4)輸入類型與設備參數

????????Type

作用:定義輸入源類型。

????????選項

Joystick Axis:手柄搖桿或觸發器(如?Horizontal?綁定手柄左搖桿)。

Mouse Movement:鼠標移動(如?Mouse XMouse Y)。

Key or Mouse Button:鍵盤或鼠標按鍵(如?Horizontal?綁定?A/D)。

注意:不同類型會影響其他參數的可用性(如?Mouse Movement?無需綁定按鍵)。

????????Axis

作用:指定搖桿的物理軸向(僅當?Type = Joystick Axis?時生效)。

選項

4th/5th/6th Axis:手柄的額外輸入(如油門、方向盤)。

X/Y/Z Axis:搖桿的水平、垂直或其他軸向。

????????Joy Num

作用:指定手柄編號(支持多手柄設備)。

選項Joystick 1/2/3...:綁定特定手柄。Get Motion from all Joysticks:所有手柄通用。


(5)不同類型軸的參數差異
軸類型關鍵參數示例注意事項
連續軸Gravity, Sensitivity, DeadHorizontal,?Vertical用于模擬平滑移動(如角色控制)。
按鍵觸發軸Negative/Positive ButtonFire1,?Jump瞬時觸發,無需響應參數(Gravity/Sensitivity)。
鼠標移動軸Type = Mouse MovementMouse X,?Mouse Y自動讀取鼠標位移,無需手動綁定按鍵。
手柄搖桿軸Type = Joystick Axis, Axis, DeadHorizontal(手柄左搖桿)需設置死區(Dead)防止漂移。
滾輪軸Type = Mouse MovementMouse ScrollWheel輸入值為滾輪滾動速度(Input.mouseScrollDelta)。

小結:如果你的輸入是一定范圍的值 就獲取軸,如果知識點擊,則獲取Button?

    • 常見軸

      Horizontal(AD鍵):返回-1(左)到1(右),控制左右移動。

      Vertical(WS鍵):返回-1(下)到1(上),控制前后移動。

      Mouse X/Y:鼠標移動速度,控制視角旋轉。

    • 方法區別

      GetAxis:平滑過渡值(如0.3)。

      GetAxisRaw:直接返回-1、0、1(無過渡)。

      演示代碼:

        void Update(){Debug.Log("Horizontal的值Raw" + Input.GetAxisRaw("Horizontal"));Debug.Log("鼠標的位置的值" + Input.mousePosition);Debug.Log("獲取一個開火按鍵" + Input.GetButton("Fire1"));Debug.Log("獲取鼠標滾輪" + Input.GetAxis("Mouse ScrollWheel"));Debug.Log("獲取到Mouse X" + Input.GetAxis("Mouse X"));}

    4. 其他輸入設備

    • 任意鍵檢測

      Input.anyKey:任意鍵長按。

      Input.anyKeyDown:任意鍵按下瞬間。

    • 移動設備觸摸

      Input.touches:獲取所有觸點信息(位置、移動偏移)。

      TouchPhase:觸點狀態(Began/Moved/Ended等)。

      啟用多點觸控:Input.multiTouchEnabled = true

    • 手柄

      GetButton("joystick button 0"):檢測特定按鈕。
    • 陀螺儀

      啟用:Input.gyro.enabled = true

      獲取重力/旋轉數據:gyro.gravitygyro.rotationRate

    • 加速度計
      Input.acceleration:獲取設備加速度(需移動端支持)。

    二、屏幕相關

    ????????分辨率(Resolution)?指顯示設備(如屏幕、圖像、攝像頭)中?像素(Pixel)?的總數量,通常表示為?橫向像素數 × 縱向像素數。示例:1920×1080 表示橫向有 1920 個像素,縱向有 1080 個像素,總像素數為 2,073,600(約 200 萬像素)。
    ????????單位:像素(Pixel),縮寫為 px。

    類型描述示例
    物理分辨率顯示設備的實際像素數量(硬件固定值)。手機屏幕的?2560×1440
    邏輯分辨率軟件或系統使用的像素數量(可動態調整,如窗口模式下的分辨率)。Unity 中?Screen.width
    像素密度(PPI)每英寸屏幕包含的像素數量,值越高顯示越細膩(如手機屏幕 vs 電視屏幕)。手機屏幕 PPI 通常 > 300。
    寬高比橫向與縱向像素的比例,常見如 16:9(寬屏)、4:3(傳統屏)。1920×1080 的寬高比為 16:9。

    Unity Screen 類常用功能總結

    屬性/方法作用常用性注意事項
    Screen.currentResolution獲取當前屏幕的物理分辨率(設備實際分辨率)。常用返回?Resolution?結構體,包含?width?和?height
    Screen.width獲取當前游戲窗口的寬度(非設備分辨率)。常用游戲運行時窗口的實際寬度,受全屏/窗口模式影響。
    Screen.height獲取當前游戲窗口的高度(非設備分辨率)。常用游戲運行時窗口的實際高度,受全屏/窗口模式影響。
    Screen.sleepTimeout設置屏幕休眠模式。常用設為?SleepTimeout.NeverSleep?可防止屏幕休眠(移動端常用)。
    Screen.fullScreen設置是否全屏運行(布爾值)。不常用僅控制全屏開關,不指定模式(需配合?fullScreenMode?使用)。
    Screen.fullScreenMode設置全屏模式類型。不常用可選值:
    -?ExclusiveFullScreen(獨占全屏)
    -?FullScreenWindow(無邊框窗口全屏)
    -?MaximizedWindow(最大化窗口)
    -?Windowed(窗口模式)。
    Screen.autorotateToLandscapeLeft允許屏幕自動轉向為橫屏(Home 鍵在左側)。不常用移動端專用,需在 Player Settings 中啟用自動旋轉。
    Screen.autorotateToLandscapeRight允許屏幕自動轉向為橫屏(Home 鍵在右側)。不常用同上。
    Screen.autorotateToPortrait允許屏幕自動轉向為豎屏(正常方向)。不常用同上。
    Screen.autorotateToPortraitUpsideDown允許屏幕自動轉向為倒置豎屏(上下顛倒)。不常用同上。
    Screen.orientation強制指定屏幕方向(覆蓋自動旋轉)。不常用可選值:
    -?Portrait(豎屏)
    -?LandscapeLeft(橫屏左)等。
    Screen.SetResolution()設置窗口分辨率和顯示模式。不常用示例:
    SetResolution(1920, 1080, true)?或
    SetResolution(1920, 1080, FullScreenMode.ExclusiveFullScreen)
    移動端不推薦使用

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/pingmian/80329.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80329.shtml
    英文地址,請注明出處:http://en.pswp.cn/pingmian/80329.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    VBA將PDF文檔內容逐行寫入Excel

    VBA是無法直接讀取PDF文檔的,但結合上期我給大家介紹了PDF轉換工具xpdf-tools-4.05,先利用它將PDF文檔轉換為TXT文檔,然后再將TXT的內容寫入Excel,這樣就間接實現了將PDF文檔的內容導入Excel的操作。下面的代碼將向大家演示如何實…

    Spring Boot之MCP Client開發全介紹

    Spring AI MCP(模型上下文協議,Model Context Protocol)客戶端啟動器為 Spring Boot 應用程序中的 MCP 客戶端功能提供了自動配置支持。它支持同步和異步兩種客戶端實現方式,并提供了多種傳輸選項。 MCP 客戶端啟動器提供以下功能: 多客戶端實例管理 支持管理多個客戶端實…

    [題解]2023CCPC黑龍江省賽 - Folder

    來源:F.Folder - Codeforces題意:給定由 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le 10^5) n(1≤n≤105)個結點組成的樹,每次操作可將一棵子樹接到其他結點上。求將樹轉換為一棵斜樹的最小操作次數。關鍵詞:思維(簽到)題解:斜…

    string[字符串中第一個的唯一字符][藍橋杯]

    使用哈希表解決 class Solution { public:int firstUniqChar(string s) {int arr[26];for(int i0;i<s.size();i){arr[s[i]-a];}for(int i0;i<s.size();i){if(arr[s[i]-a]1)return i;}return -1;} };

    【深度學習-Day 8】讓數據說話:Python 可視化雙雄 Matplotlib 與 Seaborn 教程

    Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

    Flink 實時數據一致性與 Exactly-Once 語義保障實戰

    在構建企業級實時數倉的過程中,“數據一致性” 是保障指標準確性的核心能力,尤其是在金融、電商、醫療等對數據敏感度極高的場景中。Flink 作為流批一體的實時計算引擎,其內建的 Exactly-Once 語義為我們提供了強有力的保障機制。本篇將圍繞如何實現端到端的數據一致性、如何…

    傅利葉十周年,升級核心戰略:“有溫度”的具身智能藍圖

    5月9日&#xff0c;傅利葉十周年慶典暨首屆具身智能生態峰會在上海正式召開。本次大會以“十年共創&#xff0c;具身成翼”為主題&#xff0c;匯聚了來自通用機器人與醫療康復領域的頂尖專家學者、合作伙伴與投資機構&#xff0c;共同探索具身智能在未來十年的技術應用與生態發…

    Docker中mysql鏡像保存與導入

    一、Docker中mysql鏡像保存 Docker 的 MySQL 鏡像保存通常有兩種場景&#xff1a;一種是保存鏡像本身的修改&#xff08;如配置、初始化數據&#xff09;&#xff0c;另一種是持久化保存容器運行時產生的數據&#xff08;如數據庫表、用戶數據&#xff09;。以下是具體方法&am…

    大模型微調指南之 LLaMA-Factory 篇:一鍵啟動LLaMA系列模型高效微調

    文章目錄 一、簡介二、如何安裝2.1 安裝2.2 校驗 三、開始使用3.1 可視化界面3.2 使用命令行3.2.1 模型微調訓練3.2.2 模型合并3.2.3 模型推理3.2.4 模型評估 四、高級功能4.1 分布訓練4.2 DeepSpeed4.2.1 單機多卡4.2.2 多機多卡 五、日志分析 一、簡介 LLaMA-Factory 是一個…

    記錄一次window2012r2安裝配置oracle11g的過程-出現的錯誤以及解決方法

    Windows server 2012R2安裝Oracle11g 出現的錯誤 同事反饋正常安裝oracle后&#xff0c; 使用命令行 sqlplus sys / as sysdba出現“ORA-12560:TNS:協議適配器錯誤”。 去services.msc服務狀態里面 OracleOraDb11g_home1TNSListener服務停止狀態&#xff0c;而且無法啟動。 …

    2003-2020年高鐵線路信息數據

    2003-2020年高鐵線路信息數據 1、時間&#xff1a;2003-2020年 2、來源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指標&#xff1a;高鐵線路名稱、起點名、終點名、開通時間、線路長度(km)、設計速度(km/h&#xff09;、沿途主要車站 …

    【論文閱讀】FreePCA

    FreePCA: Integrating Consistency Information across Long-short Frames in Training-free Long Video Generation via Principal Component Analysis 原文摘要 問題背景 核心挑戰&#xff1a; 長視頻生成通常依賴在短視頻上訓練的模型&#xff0c;但由于視頻幀數增加會導致數…

    Linux:線程同步與互斥

    目錄 線程互斥 鎖 初始化 銷毀 加鎖 解鎖 線程同步 條件變量 初始化 銷毀 等待條件滿足 喚醒等待 pthread_cond_signal pthread_cond_broadcast 生產者消費者模型 3種關系 2種角色 1個交易場所 POSIX信號量 初始化 銷毀 等待 發布 線程互斥 互斥相關…

    LeetCode --- 448 周賽

    題目列表 3536. 兩個數字的最大乘積 3537. 填充特殊網格 3538. 合并得到最小旅行時間 3539. 魔法序列的數組乘積之和 一、兩個數字的最大乘積 由于數據都是正數&#xff0c;所以乘積最大的兩個數&#xff0c;本質就是找數組中最大的兩個數即可&#xff0c;可以排序后直接找到…

    Azure Document Intelligence

    Azure Document Intelligence(以前稱為 Form Recognizer)是一項云服務&#xff0c;可用于從文檔中提取文本、鍵值對、表等信息。下面是一個使用 Python SDK 進行文檔轉換和提取信息的基本示例。 1. 安裝依賴 首先&#xff0c;你需要安裝 azure-ai-formrecognizer 庫&#xff0c…

    51單片機快速成長路徑

    作為在嵌入式領域深耕18年的工程師&#xff0c;分享一條經過工業驗證的51單片機快速成長路徑&#xff0c;全程干貨無注水&#xff1a; 一、突破認知誤區&#xff08;新手必看&#xff09; 不要糾結于「匯編還是C」&#xff1a;現代開發90%場景用C&#xff0c;掌握指針和內存管…

    SQLite數據庫加密(Java語言、python語言)

    1. 背景與需求 SQLite 是一種輕量級的關系型數據庫,廣泛應用于嵌入式設備、移動應用、桌面應用等場景。為了保護數據的隱私與安全,SQLite 提供了加密功能(通過 SQLCipher 擴展)。在 Java 中,可以使用 sqlite-jdbc 驅動與 SQLCipher 集成來實現 SQLite 數據庫的加密。 本…

    《AI大模型應知應會100篇》第53篇:Hugging Face生態系統入門

    第53篇&#xff1a;Hugging Face生態系統入門 ——從模型獲取到部署的全流程實戰指南 &#x1f4cc; 摘要 在人工智能快速發展的今天&#xff0c;Hugging Face已成為自然語言處理&#xff08;NLP&#xff09;領域最具影響力的開源平臺之一。它不僅提供豐富的預訓練模型、強大…

    什么是向量數據庫?向量數據庫和關系數據庫有什么區別?

    什么是向量數據庫&#xff1f; 向量數據庫是一種專門設計用來存儲、索引和查詢向量數據的數據庫系統。在當今的人工智能和機器學習領域中&#xff0c;向量數據庫變得越來越重要&#xff0c;尤其是在處理高維數據如圖像、音頻和文本等非結構化數據時。 主要用途 相似度搜索&…

    關于甲骨文(oracle cloud)丟失MFA的解決方案

    前兩年&#xff0c;申請了一個招商的多幣種信用卡&#xff0c;然后就從網上擼了一個oracle的免費1h1g的服務器。 用了一段時間&#xff0c;人家要啟用MFA驗證。 啥叫MFA驗證&#xff0c;類似與短信驗證吧&#xff0c;就是綁定一個手機&#xff0c;然后下載一個app&#xff0c;每…