Unity全面入門筆記19-其它輸入方式

其它輸入方式

輸入管理器

  • 輸入管理器

我們可以在Unity的輸入管理器(主界面菜單欄的"Edit"->“Project Settings”->“Input”)當中管理自己的鍵位,注意,目前Unity的輸入管理器是不支持在Android和IOS端遊戲中使用的。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PNZlQ9n2-1570118974811)(C:\Users\UPiracy\AppData\Roaming\Typora\typora-user-images\1569993835385.png)]

我們可以在腳本中通過Input.GetAxis方法來獲得一個Axes的值。在前面我們已經通過這個方法獲得過Mouse X、Mouse Y和Mouse ScrollWheel這三個Axis的值。接下來我們再以Horizontal來說明輸入管理器的具體用法:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-2R79ex7Z-1570118974812)(C:\Users\UPiracy\AppData\Roaming\Typora\typora-user-images\1569993871507.png)]

輸入器中輸入將輸入定義爲軸,保存值爲-1到1的浮點數,對應兩個不同的操作,一個是使該值向正向增加的輸入,一個是使該值向負向增加的輸入。

Name是軸的名稱,就是在腳本中使用Input.GetAxis方法時作爲參數的名稱。這個屬性也會在使用PC中打開Unity遊戲時作爲出現在選項菜單中的名字。通過在輸入管理器設置按鍵,我們也可以給玩家提供自定義按鍵的接口(僅限PC端):

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-E0Q7yZBK-1570118974813)(C:\Users\UPiracy\AppData\Roaming\Typora\typora-user-images\1570074408432.png)]

如果在輸入管理器中沒有填寫Descriptive Name和Descriptive Negative Name,那麼就會在自定義接口中顯示爲(+)和(-)。這兩個名稱只對開啓遊戲時的界面有效。

輸入管理器中的Type可以選擇偵測的是按鍵、鼠標行爲還是搖桿行爲。其中,在Type中使用Mouse Movement時,可以在Axis中選擇X axis代表鼠標的X軸位移,Y axis代表鼠標的Y軸位移,3rd axis代表鼠標的滾輪。當Type中選擇使用Joystick Axis時可以用X axis代表搖桿的橫輸入,Y axis代表搖桿的縱輸入。

在Key or Mouse Button中,我們可以在Negative Button和Alt Negative Button中填寫提供負方向值的按鍵的值,而在Positive Button和Alt Positive Button中填寫提供正方向值的按鍵的值。

Sensitivity屬性對應的是按下鍵位時Axis改變的速率,Gravity對應的時擡起鍵位後Axis復原爲0的速率。默認情況下,需要平滑的鍵位,這兩個屬性都被設置爲3,而需要及時響應的按鍵(如開火鍵)則都被設置爲1000。

Snap屬性使響應速度加快,一旦按下按鍵,如果當前軸值和輸入的方向符號不同,會先將軸值歸零,再開始逐步增加值的大小。

Dead屬性是用於防止在使用搖桿等輸入設備時發生的抖動情況。在輸入值的絕對值小於等於該屬性值時,系統會將輸入值重置爲0。在使用搖桿或鼠標偏移時忘了設置Dead,可能會導致被控制的角色在微小距離內劇烈抖動,影響觀感。

Invert屬性表示會將Positive和Negative屬性反置,即本應使軸值增加的會導致軸值減少,而本應使軸值減少的會導致軸值增加。

OnMouseXXX事件

private void MonoBehaviour.OnMouseEnter();

OnMouseEnter:在用戶的鼠標指針移入該物體的Collider或GUI的一幀觸發,不需要按下鼠標左鍵。

private void MonoBehaviour.OnMouseOver();

OnMouseOver:在用戶的鼠標指針保持在該物體的Collider或GUI的期間連續觸發,不需要按下鼠標左鍵。

private void MonoBehaviour.OnMouseExit();

OnMouseExit:在用戶的鼠標指針離開該物體的Collider或GUI的一幀觸發,不需要按下鼠標左鍵。

private void MonoBehaviour.OnMouseDown();

OnMouseDown:在用戶的鼠標指針在該物體的Collider或GUI上按下鼠標左鍵的一幀觸發。

private void MonoBehaviour.OnMouseDrag();

OnMouseDrag:在用戶的鼠標指針在該物體的Collider或GUI上按下鼠標左鍵,並不斷保持按壓期間連續觸發。

private void MonoBehaviour.OnMouseUp();

OnMouseUp:在用戶的鼠標左鍵擡起的一幀觸發,注意,該事件和OnMouseDown配對產生,就算鼠標擡起時指針已經離開這個物體也會產生響應。

private void MonoBehaviour.OnMouseUpAsButton();

OnMouseUpAsButton:這個事件在鼠標左鍵擡起時的一幀觸發,該事件鼠標擡起時的物體必須是鼠標按下時的同一個物體。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章