UnityEvent的使用方法

tech2023-10-11  107

 官方API

1.无参数的UnityEvent

https://docs.unity3d.com/ScriptReference/Events.UnityEvent.html

using UnityEngine; using UnityEngine.Events; using System.Collections; public class ExampleClass : MonoBehaviour { UnityEvent m_MyEvent; void Start() { if (m_MyEvent == null) m_MyEvent = new UnityEvent(); m_MyEvent.AddListener(Ping); } void Update() { if (Input.anyKeyDown && m_MyEvent != null) { m_MyEvent.Invoke(); } } void Ping() { Debug.Log("Ping"); } }

2.带有一个参数的UnityEvent

https://docs.unity3d.com/ScriptReference/Events.UnityEvent_1.html

using UnityEngine; using UnityEngine.Events; [System.Serializable] public class MyIntEvent : UnityEvent<int> { } public class ExampleClass : MonoBehaviour { public MyIntEvent m_MyEvent; void Start() { if (m_MyEvent == null) m_MyEvent = new MyIntEvent(); m_MyEvent.AddListener(Ping); } void Update() { if (Input.anyKeyDown && m_MyEvent != null) { m_MyEvent.Invoke(5); } } void Ping(int i) { Debug.Log("Ping" + i); } }

3.四个参数

https://docs.unity3d.com/ScriptReference/Events.UnityEvent_4.html

using UnityEngine; using UnityEngine.Events; [System.Serializable] public class MyIntEvent : UnityEvent<int, int, int, int> { } public class ExampleClass : MonoBehaviour { public MyIntEvent m_MyEvent; void Start() { if (m_MyEvent == null) m_MyEvent = new MyIntEvent(); m_MyEvent.AddListener(Ping); } void Update() { if (Input.anyKeyDown && m_MyEvent != null) { m_MyEvent.Invoke(5, 6, 7, 8); } } void Ping(int i, int j, int k, int l) { Debug.Log("Ping" + i + j + k + l); } }

 

最新回复(0)