舉例:
需求:實現"對象或系統等"生成事件后,"事件管理器"接受收集事件[並處理記錄等等]后發送給"關心該事件的對象"進行響應[該事件的處理]的流程。
實現:
事件管理器:
public class EventManager : MonoBehaviour { Queue<IEvent> events = new Queue<IEvent>(); public void RaiseEvent() { }//加入事件隊列 void Update() { //Execute //執行隊列中事件 //Clear } }
自定義事件接口:
1 public interface IEvent 2 { 3 void Execute (); 4 }
事件處理接口:
1 public interface IMyEventHandler : IEventSystemHandler//所有自定義事件繼承 IEventSystemHandler 2 { 3 void HandleEvent(); 4 }
自定義事件:
1 public class MyEvent : IEvent 2 { 3 public GameObject target; 4 5 public MyEvent(GameObject _target) 6 { 7 target = _target; 8 } 9 10 public void Execute() 11 { 12 if (target == null) 13 return; 14 15 ExecuteEvents.Execute<IMyEventHandler>(target, null, (handler, data) => 16 { 17 handler.HandleEvent(); 18 }); 19 20 } 21 }
自定義事件處理:
1 public class IMyHandler : IMyEventHandler 2 { 3 void HandleEvent() { } 4 }
總結:通過該系統可實現收集事件,並選擇不同關心對象分發,以及事件記錄排序等等的功能。