使用 UnityEvent 在 Unity 中實現事件系統
在 Unity 中,事件系統支援遊戲中不同組件和物件之間的通訊。使用 C# 方法時,您可以使用 UnityEvent 建立自訂事件。
用於自訂事件的UnityEvent
要使用UnityEvent 建立自訂事件,請在您的腳本,如下:
public UnityEvent whoa;
UnityEvent提供了一種簡單直觀的方法來處理事件,而不需要明確委託或函數
範例實作
在您的「BigScript.cs」腳本中:
using UnityEngine; using UnityEngine.Events; public class BigScript : MonoBehaviour { [Header("Here's a cool event! Drag anything here!")] public UnityEvent whoa; private void YourFunction() { whoa.Invoke(); } }
在檢查器中,您可以拖曳其他腳本到「whoa」事件欄位。這些腳本將包含觸發“whoa”事件時調用的函數。
要從「BigScript」元件內觸發該事件,只需對「whoa」事件呼叫 Invoke() 方法即可。
處理自訂事件中的參數
對於需要參數的事件,您可以定義您的擁有通用類型參數的 UnityEvent 子類別。例如,要建立一個採用 float參數的事件:
[System.Serializable] public class _UnityEventFloat : UnityEvent<float> {}
然後,在您的腳本中,您可以定義該事件並按如下方式使用它:
public _UnityEventFloat changedLength; void ProcessValues(float v) { // ... changedLength.Invoke(1.4455f); }
拖曳時檢查器中事件字段的其他腳本,請確保選擇“動態浮動」部分來處理參數
實際實作
對於多個物件需要訂閱公共事件的特定場景,您可以建立一個自訂腳本並將其附加到預製件「工作人員」類別。在該腳本中,您可以訂閱「Day is done」事件。當事件被觸發時,腳本將為「staff」成員執行必要的操作。
這種方法允許您在預製件中集中訂閱事件,無需手動訂閱每個單獨的實例化物件.
以上是UnityEvent 如何簡化 Unity 遊戲開發中的事件處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!