Unity Input System #2 | Send Messages & InputValue

更新於 發佈於 閱讀時間約 4 分鐘

一、前言

  這篇文章將會講述如何使用程式腳本讀取 Input System 的玩家輸入。

二、輸入系統(InputSystem)

  輸入系統是極為便利的 Unity 官方控制系統,可以監控玩家不同的輸入並且支持不同輸入方式(Ex. 鍵鼠 & 手把),或是讓玩家自定義按鍵。

1. 簡介與介面說明

  在前一篇文章中,我們討論了 Input System 的 Input Map 的介面簡介與詳細的細節參數,如果有因此自行摸索看看,那你會發現你已經掌握了 Input Map了,接下來我們會講述如何使用設定好的 Input Map。

《Unity Input System #1 | 介面說明》

2. 行為模式(Behavior)

  Input System 有四種輸入方式 ,包含:

1.Send Messages.

2.Broadcast Messages.

3.Invoke Unity Events.

4.Invoke C Sharp Events.

這次我們會用 Send Messages模式,能因此用程式腳本去讀取 Input System。

3. 輸入變數(Input Value)

  在 1. 與 2.都是讓 Unity 對遊戲角色或場景發送訊息,若遊戲物件有輸入系統對應的程式腳本,就能使用 InputAction.CallbackContext 或 InputValue 接收訊息,不過  CallbackContext 只能在 Unity Events 運作。

  我曾經以為這是一個沒有修正的 Bug,於是回報錯誤給 Unity 官方,他們倒是很直接地跟我說 callbackContext只能用於 Unity Events。

三、應用方式

  接下來講述如何用程式腳本讀取InputSystem,請務必確認程式腳本中的函式或參數都要用 public 公開,InputSystem才能抓到物件。

1. 創建程式腳本

  首先,創建一個程式腳本,我們會用這個程式腳本讀取 Input System 的變數與輸入,因此命名可以類似「ControllerInput」或「PlayerInput」等相關的命名,未來我們可以藉由這個腳本對整個遊戲進行控制。

2. 添加程式腳本與輸入系統同遊戲物件

  在 Hierarchy 中新增一個遊戲物件,或是創建一個角色,在這個遊戲物件裡面放置 InputSystem ,並把剛創建好的程式腳本添加進去。

3. 設定 Input System

  在 Input System 中,我們把製作好的 Action Map 放在 Action 欄位,並把 Behavior 調整為Send Messages。

4. 設定 Input System 的 Action 欄位中的 ActionMap

  Action Map 中一定要包含一個完整的綠色項目,可以有任意藍色或紫色項目,其中綠色項目的命名,就是我們會在程式腳本中看到的命名。

5. 檢查  We sendMessage() to  GameObject:

  這時檢查 Input System 的底部,會發現有官方的提示,會出現一些關於你輸入系統的函式,其名稱為綠色項目前方加英文「On」,假設你的綠色項目名稱叫做 Button_Right,Inspector 中會出現 OnButton_Right。

6. 創建同名含式與特殊參數

  在程式腳本中創建同名稱的 void 函式,不過參數必須要為 InputValue,可以把參數命名為 value。

public void OnController_Button_A(InputValue value)

{

  Input_Button_A(value.isPressed);

}

7. 讀取特殊參數的變化

  我們可以直接使用這個參數去做讀取,例如isPressed,也可以創建一個新的函數去讀取 value,維持可讀性。

public void Input_Button_A(bool newButtonState)

{

  ButtonA = newButtonState;

}

  其中 ButtonA 是自己的程式腳本創建的布林,用於給其他程式使用。

8. 完成

  以上,可以點擊 Play 確認效果。

四、後記

  這篇文章暫時補足了 InputSystem的詳細操作,未來如果有接觸到其他輸入系統的其他操作方式,會在撰寫相關文章。

avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會講述角色控制器(CharacterController )的基本概述,並且分析其中可能的應用方式,最後簡單講述它的使用方式心得。
這篇文章將會講述物件池的基本概述,並介紹應用方向。
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會講述角色控制器(CharacterController )的基本概述,並且分析其中可能的應用方式,最後簡單講述它的使用方式心得。
這篇文章將會講述物件池的基本概述,並介紹應用方向。
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
★★★先到自己電子郵件信箱下載教材上的圖片對照閱讀操作。 程式基本功能都是藉由輸入資料 --> 電腦依據程式處理 --> 輸出顯示所要的結果 輸入指令 input() 使用於從鍵盤輸入資料,暫時存在指定的變數的記憶體位址,方便程式執行過程中可以隨時讀取使用,或暫停程式執行,按指定鍵繼續程
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
就如同標題一樣,input的作用就是從使用者那裡獲取輸入,直到使用者輸入一段文本並按下 ENTER 鍵。 然而用戶輸入的數據(文本)都將作為字串被返回,並存儲在變數中。 接著我們舉個例,比如說我們在一段數據中需要獲取使用者的名稱,範例如下: name = input("請輸入你的名字:") #
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
★★★先到自己電子郵件信箱下載教材上的圖片對照閱讀操作。 程式基本功能都是藉由輸入資料 --> 電腦依據程式處理 --> 輸出顯示所要的結果 輸入指令 input() 使用於從鍵盤輸入資料,暫時存在指定的變數的記憶體位址,方便程式執行過程中可以隨時讀取使用,或暫停程式執行,按指定鍵繼續程
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
就如同標題一樣,input的作用就是從使用者那裡獲取輸入,直到使用者輸入一段文本並按下 ENTER 鍵。 然而用戶輸入的數據(文本)都將作為字串被返回,並存儲在變數中。 接著我們舉個例,比如說我們在一段數據中需要獲取使用者的名稱,範例如下: name = input("請輸入你的名字:") #
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
Thumbnail
這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。