處理用戶的shuru是游戲中必不可少的元素。Unity提供了一個非常強大易用的處理輸入信息的類 —— Input,它可以處理鼠標、鍵盤、遙感/方向盤/手柄等游戲外設的輸入信息,也可以處理 IOS/Android 等移動設備的觸摸輸入信息。Input Manager (輸入管理器)用于為項目定義各種不同的輸入軸和操作。開發(fā)人員可以通過編寫腳本接收輸入信息,完成與用戶的交互。
Input Manager(輸入管理器)
Input 類時處理輸入的接口,下面包含成員變量和函數(shù)的簡要介紹。
Input 類成員變量
| 成員變量 | 說明 |
|---|---|
| acceleration | 得到設備當前在三維空間中的線性加速度(只讀) |
| accelerationEventCount | 得到上一幀的加速度參數(shù)數(shù)據(jù)長度 |
| accelerationEvents | 得到上一幀的加速度數(shù)據(jù)列表(只讀)(分配臨時變量) |
| anyKey | 是否有按鍵按下(只讀) |
| anyKeyDown | 當有任意按鍵按下的第一幀返回true(只讀) |
| compass | 羅盤屬性(僅支持手持設備)(只讀) |
| comenstateSensors | 是否需要根據(jù)屏幕方向補償感應器 |
| compositionCursorPos | 當前IME組合字符串的光標位置 |
| compositionString | 用戶通過IME輸入的組合字符串 |
| deviceOrientation | 操作系統(tǒng)提供的設備方向(只讀) |
| gyro | 返回默認的陀螺儀 |
| imeCompositionMode | 設置IME組合模式 |
| imelsSelected | 當前是否啟用了IME輸入鍵盤 |
| inputString | 得到當前幀的鍵盤輸入字符串(只讀) |
| mousePosition | 鼠標位置的像素坐標(只讀) |
| multiTouchEnabled | 系統(tǒng)是否支持多點觸摸 |
| simulateMouseWithTouches | 屏幕觸控模擬鼠標的點擊 |
| touchCount | 當前所有觸摸狀態(tài)列表長度(只讀) |
| touches | 當前所有觸摸狀態(tài)列表(只讀)(分配臨時變量) |
| touchSupported | 返回應用程序正在運行的設備是否支持觸摸輸入 |
Input 類成員函數(shù)
| 成員函數(shù) | 說明 |
|---|---|
| GetAccelerationEvent | 返回指定的上一幀加速度測量數(shù)據(jù)(不分配臨時變量) |
| GetAxis | 根據(jù)名稱得到虛擬輸入軸的值 |
| GetAxisRaw | 根據(jù)名稱得到虛擬坐標軸的未使用平滑過濾的值 |
| GetButton | 如果指定名稱的虛擬鍵被按下,那么期間持續(xù)返回 true |
| GetButtonDown | 指定名稱的虛擬按鍵被按下的那一幀返回 true |
| GetButtonUp | 指定名稱的虛擬按鍵被松開的那一幀返回 true |
| GetJoystickNames | 返回當前連接的所有搖桿的名稱數(shù)組 |
| GetKey | 當指定的按鍵被按下期間持續(xù)返回 true |
| GetKeyDown | 當指定的按鍵被按下的那幀返回 true |
| GetKeyUp | 當指定的按鍵被松開的那幀返回 true |
| GetMouseButton | 指定的鼠標按鍵是否按下 |
| GetMouseButtonDown | 指定的鼠標俺家松開的那一幀返回 true |
| GetMouseButtonUp | 指定的鼠標按鍵松開的那一幀返回 true |
| GetTouch | 返回指定的觸摸數(shù)據(jù)對象(不分配臨時變量) |
| IsJoystickPreconfigured | 配置默認的搖桿輸出(只限Linux) |
| ResetInputAxes | 重置所有輸入,調(diào)用該方法后所有方向軸和按鍵的數(shù)值都變?yōu)?0 |
Key 和 Button 的區(qū)別:
在Input類中,Key與物理按鍵對應,例如鍵盤、鼠標、搖桿上的按鍵,其映射關系無法改變,可以通過按鍵名稱或者按鍵編碼KeyCode來獲取其輸入狀態(tài)。例如GetKeyDown(KeyCode.A)會在按下鍵盤 “A”鍵時返回true。
而Button 是輸入管理器 Input Manager 中定義的虛擬按鍵,通過名稱來訪問。開發(fā)者可以根據(jù)需要創(chuàng)建和命名虛擬按鍵,并設置與物理按鍵(及其組合)的消息映射。依次選擇菜單欄中的 Edit -> Project Settings -> Input 命令,即可打開輸入管理器。
Key 不可改變,Button可以靈活的配置輸入,并且可以讓玩家來自定義鍵位輸入,因此在開發(fā)中推薦使用虛擬按鍵。
輸入軸Axis:
輸入軸Axis用來模擬平滑變化的輸入,例如搖桿的變化、方向盤的轉(zhuǎn)動等,需要在輸入管理器中進行配置。它包含政府兩個虛擬按鍵(Positive Button 和 Negative Button)。可以吧一個輸入軸想象成一個滑動條,左邊取值 -1,右邊取值為 1。當按下按鍵時,數(shù)值會逐漸從 0 向一端變化,實現(xiàn)漸變的效果,而不會顯得突兀。(例如汽車啟動)
鼠標輸入
(1)鼠標相應事件示例:
void Update() {
if(Input.GetMouseButton(0)) {//左鍵按下
print("鼠標左鍵按下");
}
if(Input.GetMouseButtonDown(1)) {//右鍵按下
print("鼠標右鍵按下");
}
if(Input.GetMouseButtonUp(2)) {//中鍵抬起
print("鼠標中鍵抬起");
print("鼠標當前位置:" + Input.mousePosition);
}
}
(2)鼠標控制物體旋轉(zhuǎn):
void Update() {
float horizontalSpeed = 2.0f;
float verticalSpeed = 2.0f;
float h = horizontalSpeed * Input.GetAxis ("Mouse X");
float v = verticalSpeed * Input.GetAxis ("Mouse Y");
transform.Rotate (v, h, 0);
}