ETH官方钱包

創作內容

12 GP

Unity Input System

作者:KK│2021-04-25 16:00:02│巴幣:32│人氣:1930

來簡介一下這次使用的 unity 內建 package — input system

你可以在 package manager 上找到它,但使用的限制是至少要 2019.1 以上的版本;

算是滿新的資源,畢竟在那之前有不少嫌棄內建 input manager

之後跳出來作成各種好用的插件,在這樣的壓力下,Unity 總算也面對且改善了?!


可以在這邊找到它,Unity 有不少內建好用的資源包,有空的話建議也都裝來試試看。

如果你已經將版本升級到 2020 了,那邊新版的把 asset storepackage manager 作了整合。


選用 Unity Registry 加上搜尋打上 input 就會看到它了。

搜不到的情況或者不能裝的情況應該就是引擎版本過舊,注意是 2019.1 以上喔。

接著作些 input manager 的簡介,再帶到新的 input 系統。

在我們開了一個新的 Unity 專案後,Edit > Project Setting > Input Manager 裡可以發現,


其實早就定義了一堆偵測輸入的定義。

就算你不用自己額外寫,也已經具備這些定義可取值判斷玩家現在輸入什麼按鍵。

甚至,有些定義是有重複的,這是為什麼呢?


其實內建就已經準備好鍵盤與滑鼠的配置,跟搖桿控制器的兩種基本輸入。

正常來說的話,你的遊戲如果是使用 input manager 的規則下去作偵測邏輯的,

包出來的版本用搖桿手把,也是可以玩的。( 並不是小精靈幫你偷接的 )


用法也很單純,按鈕型的話上面有定義的按鍵 Key,直接用 Input.GetButton 系列就能取值。

要注意的點是,大小寫要一致,可能會發生的按鍵沒反應,因為自己新增了小寫的 shoot 之類。


不知道有沒有人注意到過,Unity 內建的初次點擊防呆?!

第一次點的時候會將 down > button > up 在那一 frame 瞬間跑完,

只有第二次時才是正常運作的,也就是一定先進行一次點射才能連發Bug?!。

純粹因為好奇而提出的問題,不是這篇的重點,而且它沒有影響到我目前作的遊戲。

除了單純的布林值的按鈕型外,另外常用的就是軸型的,如水平垂直移動在用的偵測。


這裡順便補充一下,其實按鈕型的也是可以吃軸的判斷喔,


來一個測試輸入的方法,抓軸的 Fire1

雖然抓出來的值大於 0 叫做被壓下去,反之則為沒有被按壓,一樣是布林沒啥意義就是,

但可以幫我們理解一個軸型數字變化的一些參數。


調整了重力、靈敏度跟死亡狀態的值。

以下是測試結果。


可以看到當按下後,壓著,軸值的慢慢變化......

然後當我放開滑鼠左鍵(Fire1)的時後,值就從 0.0028X 一路往下滑,最後停在一個尤拉常數。

而靈敏度就表示這個按鍵從未被按壓到按壓變化的速度值,值越高則越靈敏;

反之重力則是從按壓狀態釋放後,回到未按壓的變化的速度值,值越高越能明確定義一次按壓結束。(可設為 Infinite 無限大,一放開就結束。)

有了這幾個參數就更能了解水平與垂直位移的軸變化,找出你想做的遊戲的移動是怎樣的手感。

這個 input 的用法是非常方便且廣泛,我也有不少測試功能是直接用這個來作。

那麼,複習結束。

接著來談談新版的有什麼差異,

第一件事當你安裝完後,會起變化的就是原本有在使用的 event system module


它會指出現在有跟現有 input manager 有所衝突的一些設定,你想選用哪一個。

我們可以去 Edit > Project Setting > Player > Other Setting 裡找到,



所想啟用的 Input Handling 是想用舊的還是新版的,還是兩個都用,保留舊的 input.GetXXX 的方式。

選擇都用後就會看到跟我一樣的畫面了。

而這套 Input System,其實在編輯器介面下了不少工,

如我之前所說,有點像是在致敬其他插件 Rewired 的感覺。


這邊編輯的任何動作,要記得存檔,不然是不會發生作用的。

每次的存檔都會對一隻腳本同步變化,跟你想要新增一個 Input Action Asset 同名的腳本,


安裝完就看得到它的程式碼了,可以去看看它的偵測事件流程是怎麼進行的。

以及每次新增會丟到哪邊去,這隻腳本都會同步作變化。

如上上圖編輯器所示,我規劃了 1P 玩家可以控制上下左右,

2P 玩家則是 WASD 以及個別都有 UI 相關確認鍵及三種攻擊按鍵( 輕、中、重 )


Perform 是一個 Action,可以用委派去接,只有在它偵測到按下時才會發出這個事件。

這個寫法會比在 Input 裡每幀都檢查來得乾淨一點,

不過有個地方需要注意。


發送 perform 事件的時機,預設是 Press And Release,按和放都會執行,

像是攻擊鍵我就不需要作到這麼細的變化,只需偵測壓下就好,

當發生某項功能執行次數不如預期時,回到這邊檢查看看,然後記得存檔讓腳本刷新。


除了吃按鈕事件的使用外,一般軸型的數值偵測,一樣可以在 update 裡使用,

就算是以前的習慣也能照樣搬來使用,只是多了更多選擇而已。

最後要說的心得是,我覺得這個 input system

其實有點像是把之前藏起來的東西,現在公開來讓你查得到也改得到,


就像這樣子,我可以輕易取出鍵盤這個硬體,並抓出某個值是否在這幀按下的狀態,

詳情參考官方文件說明,更多的範例展示

更多接口更多方便更多可能,使用上來說加東加西的一開始仍會覺得很麻煩,

不過什麼都看得到抓得到,似乎也更有彈性吧?!

wasPressedThisFrame 也很方便,不必擔心連續發送,

老實說,因為一切都弄得很心血來潮,

至今我還無法確定用 input system 去做極簡格鬥遊戲是不是一個好的判斷XD

感覺這個 package 還有遠遠比我想像中更有潛力的地方,還等待著我挖掘。

像是看完上面全部介紹馬上冒出的疑問,每次從編輯器裡新增修改了某個按鈕的設定後,

腳本就跟著改變,那如果我想自訂義按鍵不是就很難搞嗎?


其實它內建還有不少範例,有機會的話點開裝一裝吧。

向自訂義按鍵或者 Rebinding 它一定都想過了,相信不是什麼大問題,

想出手機板的,專研觸控按鈕跟精準控制知道可以去看看 touch

同樣虛擬搖桿也是,我說過這一套出來是要挑戰其它插件的,它有這個野心跟實力。XD

不過時間點上就不知道來不來得及了,

畢竟 Rewired 的強大,連任天堂官方都認可它是接搖桿控制器的推薦插件,

不論如何,想自己試著寫輸入端這塊、或者搞懂輸入流程的事件與定義,

這都是一個很好的學習管道,若想快速實現遊戲想法,將精力集中在設計跟驗證點子,

那就學習怎麼用就好,有不少的好插件都能幫助我們節省更多時間去作更迫切的任務。





最後,附上我以前跟我弟還有兩個表弟一起玩小朋友齊打交的鍵盤配置。



四個人都能穩穩地堅守崗位,打倒邪鬼破關沒問題,

剛好也有一個比較習慣右手移動左手攻擊的人,另外避開 shift 相黏鍵,

我們當初想到這個配置都滿意的大笑,真的是太天才了

也許也是想到當初那個有趣的感覺,所以突然想來弄個本機端多人 game 吧。

^+++++++++^

以上,謝謝收看。
引用網址:http://www.jamesdambrosio.com/TrackBack.php?sn=5131836
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:input system|input manager

留言共 3 篇留言

樂小呈
我記得新的input system也有好看很多的介面...反觀[e8]

04-25 16:04

KK
哈哈哈,他們有在努力了啦~~~[e12]04-25 16:06
◎曉柴
啊~Input System
對我來說目前他最大的問題就是偵測不到我其他的劣質搖桿

不過總比花錢買其他外掛程式來的好[e8]
Rewired的價格可以買大概6套KATANA ZERO

04-25 16:27

KK
說到其它雜牌搖桿倒也是一個問題,我之前遇過的狀況是,當發現偵測不到的搖桿時,一律設定成 XBox 的 controller,就可以用了,意外的微軟在這塊上處理得不錯啊,你可以試試看。XD04-25 16:51
朱朱
作者辛苦了,給你打氣,加油

04-25 18:50

KK
哦耶~~~感謝朱朱>Q< 繼續奮戰![e22]04-25 23:22
我要留言提醒:您尚未登入,請先登入再留言

12喜歡★nigel0813 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:拳線交鋒-開發日記4... 後一篇:拳線交鋒-開發日記5...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情? 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】