目錄
一、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
?時停止。通用性:僅對需要方向沖突處理的軸有意義(如?Horizontal
、Vertical
)。
Invert(?)
????????作用:反轉輸入方向(正負值互換)。示例:默認?Mouse Y
?向上移動為正值,勾選后向下移動為正值。通用性:適用于需要反向操作的軸(如視角控制)。
(4)輸入類型與設備參數
????????Type
作用:定義輸入源類型。
????????選項:
Joystick Axis:手柄搖桿或觸發器(如?
Horizontal
?綁定手柄左搖桿)。Mouse Movement:鼠標移動(如?
Mouse X
、Mouse 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, Dead | Horizontal ,?Vertical | 用于模擬平滑移動(如角色控制)。 |
按鍵觸發軸 | Negative/Positive Button | Fire1 ,?Jump | 瞬時觸發,無需響應參數(Gravity/Sensitivity)。 |
鼠標移動軸 | Type = Mouse Movement | Mouse X ,?Mouse Y | 自動讀取鼠標位移,無需手動綁定按鍵。 |
手柄搖桿軸 | Type = Joystick Axis, Axis, Dead | Horizontal (手柄左搖桿) | 需設置死區(Dead)防止漂移。 |
滾輪軸 | Type = Mouse Movement | Mouse 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.gravity
、gyro.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) 。移動端不推薦使用。 |