[Unity 6] 在檢查器 (Inspector) 中設定事件 (Event) 觸發的方法

2025.04.10 / Unity 引擎
上一篇文章中宣告好 Unity 事件 後,除了能用 C# 來監聽與定義觸發事件後要執行的程式,也可以在檢查器中設定。本文要來介紹如何在 Unity 的檢查器中設定無參數與有參數的事件。

首先,我們要先用 C# 宣告好兩個事件,直接拿 上一篇文章的專案 來示範。

將 NoArgsEventExample 與 ArgsEventExample 兩個腳本都掛到 GameManager 上,第一個是無參數的事件,第二個是帶有一個整數參數的事件。

無參數事件

有兩種使用方式,第一種直接呼叫物件內建的方法或修改屬性,我們用控制物件開關 gameObject.SetActive,另一種是呼叫自己寫的方法。

控制物件開關

先點擊 No Args Event Example 組件 (Component) 右下角的 +,並點擊下圖編號 2 的圓圈來選擇遊戲物件 (自行建立一個空物件)。

再點擊 No Function > GameObject > SetActive (bool),選擇遊戲物件預設的設定開關方法。

最後勾選或取消下圖紅框處的勾選框,設定觸發事件時要改變的狀態。如下圖的沒勾選的設定是,在事件觸發後,會將物件給關掉,把它隱藏起來。

呼叫自訂方法

新增一個 CustomMethodExample 腳本,建立一個公開 (Public) 的 Foo 方法,並帶有一個字串參數,呼叫時會將字串印出來。

1using UnityEngine;
2
3public class CustomMethodExample : MonoBehaviour
4{
5    public void Foo(string text)
6    {
7        Debug.Log(text);
8    }
9}

將 CustomMethodExample 掛到一個空物件上面。

操作方法與前面的呼叫預設方法相同,只不過這次選的是自己建立的 CustomMethodExample > Foo (string)。

最後可以在輸入框中輸入文字,當事件觸發時將會透過 Foo 方法來把文字印出來。

有參數事件

有參數的事件意思是當事件觸發時,它會帶有參數,你可以讀取那個參數來辨識是誰觸發的事件或其它資訊。

舉例來說,ArgsEventExample 的 OnKeyTrigger 事件會在按下方向鍵時被觸發,並帶有 1234 的整數參數,讓接收端知道現在是按下了哪個按鍵。

首先,在 CustomMethodExample 中新增一個 PrintKeyID 方法,並帶有一個整數參數。

1public void PrintKeyID(int id)
2{
3    Debug.Log(id);
4}

接下來,操作和前面的相同,但選擇的是 CustomMethodExample > PrintKeyID。

這邊要注意,我們要選的是上面 Dynmatic int 區塊的 PrintKeyID,不是 Static Parameters 的。

正確的設定會長這樣,選擇 PrintKeyID 後,下面沒有任何勾選框或輸入框。

執行遊戲,當按下方向鍵後,遊戲就會因為事件被觸發的關係,印出方向鍵的數字 ID。下圖紅框處就是我們寫的 PrintKeyID 方法。

範例專案

本文所示範的內容皆已上傳至 GitHub (inspector 分支):tedliou/unity-event-tutorial

參考資料

技術文件

相關文章

Ted Liou

雲科碩士在讀中,專注於 Unity C#、TouchDesigner 技術。
只要願意以超連結標註本文,歡迎轉載或用於教材製作!