zoukankan      html  css  js  c++  java
  • 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 }

      总结:通过该系统可实现收集事件,并选择不同关心对象分发,以及事件记录排序等等的功能。

  • 相关阅读:
    6、scala面向对象-对象
    C# App.config配置文件的讲解
    abstract、override、new、virtual、sealed使用和示例
    C# 枚举的使用
    深入浅出面向对象分析与设计
    数据契约(DataContract)的作用
    C# 启动停止SQLServer数据库服务器
    C# 定时器计划任务
    C# 程序只能执行一次
    WPF dataGrid中的check的改变事件
  • 原文地址:https://www.cnblogs.com/munetiey/p/6496336.html
Copyright © 2011-2022 走看看