【Unity3D】 EventManager事件管理器

来源:互联网 发布:ecshop微商城源码下载 编辑:程序博客网 时间:2024/06/02 16:55
/* * 事件管理器 * Claine * 2015.08.30 */using UnityEngine;using System.Collections;using System.Collections.Generic;/// <summary>/// 事件类型定义/// </summary>public enum EventDefinition{    Event_Com_Data,//分机数据    Event_Com_TimeOut,//倒计时结束    Event_OptionView_Change,    Event_Input_Down,    Event_Input_Up,    Event_Input_Left,    Event_Input_Right,    Event_Input_Confirm,}/// <summary>/// 事件数据结构/// </summary>public class EventData{    public EventDefinition eventType;    public Delegate_EventLogicCallBack callback;}/// <summary>/// 事件管理器/// </summary>public class EventManager {    private static EventManager _instance;    public static EventManager Instance    {        get        {            if (_instance == null)            {                _instance = new EventManager();            }            return _instance;        }    }    public void Init()    {        Debug.Log("事件管理器 ---- 启动成功");    }    /// <summary>    /// 事件缓存    /// </summary>    private List<EventData> callbackList = new List<EventData>();    /// <summary>    /// 事件监听    /// </summary>    /// <param name="_eventType"></param>    /// <param name="_callback"></param>    public void AddListener(EventDefinition _eventType, Delegate_EventLogicCallBack _callback)    {        EventData eventData = callbackList.Find(a=>a.eventType == _eventType);        if (eventData == null)        {            eventData = new EventData();            eventData.eventType = _eventType;            eventData.callback = _callback;            callbackList.Add(eventData);        }        else        {            eventData.callback += _callback;        }    }    /// <summary>    /// 移除监听    /// </summary>    /// <param name="_eventType"></param>    /// <param name="_callback"></param>    public void RemoveListener(EventDefinition _eventType,Delegate_EventLogicCallBack _callback)    {        EventData eventData = callbackList.Find(a => a.eventType == _eventType);        if (eventData != null)        {            eventData.callback -= _callback;            if (eventData.callback == null)                callbackList.Remove(eventData);        }    }    /// <summary>    /// 调度事件    /// </summary>    /// <param name="_eventType"></param>    /// <param name="_data"></param>    public void DispatchEvent(EventDefinition _eventType,object _data = null)    {        EventData eventData = callbackList.Find(a => a.eventType == _eventType);        if (eventData == null)        {            Debug.Log("Not Found Event:" + _eventType);        }        else        {            eventData.callback(_data);        }    }}//事件委托public delegate void Delegate_EventLogicCallBack(object _data = null);





                                             
0 0
原创粉丝点击