2017/3/3 EventSystems-----IEventSystemHandler和ExecuteEvents.Execute使用案例


 

舉例:

  需求:實現"對象或系統等"生成事件后,"事件管理器"接受收集事件[並處理記錄等等]后發送給"關心該事件的對象"進行響應[該事件的處理]的流程。

 

  實現:

  事件管理器:

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 }

 

  總結:通過該系統可實現收集事件,並選擇不同關心對象分發,以及事件記錄排序等等的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM