在 Unity 中,常用的?UnityEngine.Events
?中的幾個重要的事件處理函數包括:
-
UnityEvent
UnityEvent
?是 Unity 提供的一種事件系統,可以用來實現腳本與場景中的對象之間的互動。它可以用來定義和響應事件,如按鈕點擊、物體碰撞等。- 示例用法:
using UnityEngine; using UnityEngine.Events;public class ExampleScript : MonoBehaviour {public UnityEvent onTriggerEnterEvent;void OnTriggerEnter(Collider other){// 觸發事件onTriggerEnterEvent.Invoke();} }
- 在上面的示例中,
onTriggerEnterEvent
?是一個?UnityEvent
,當物體進入觸發器時,調用?Invoke()
?方法觸發事件。
-
UnityAction
UnityAction
?是一個委托類型,用于表示不帶參數的回調函數。通常與?UnityEvent
?配合使用,作為事件響應的具體函數。- 示例用法:
using UnityEngine; using UnityEngine.Events;public class ButtonClickHandler : MonoBehaviour {public UnityEvent onClickEvent;void Start(){// 添加事件監聽onClickEvent.AddListener(OnClick);}void OnClick(){Debug.Log("Button Clicked!");} }
- 在這個例子中,
onClickEvent
?是一個?UnityEvent
,OnClick()
?是一個?UnityAction
,通過?AddListener()
?將?OnClick
?方法添加為?onClickEvent
?的監聽器。
-
UnityEvent<T>
UnityEvent<T>
?是泛型版本的?UnityEvent
,用于傳遞一個參數的事件。- 示例用法:
using UnityEngine; using UnityEngine.Events;public class DamageEvent : MonoBehaviour {public UnityEvent<float> onTakeDamageEvent;void TakeDamage(float amount){// 觸發事件并傳遞參數onTakeDamageEvent.Invoke(amount);} }
- 在這個例子中,
onTakeDamageEvent
?是一個接受?float
?參數的事件,當調用?TakeDamage(float amount)
?方法時,通過?Invoke(amount)
?觸發事件并傳遞參數。