unity c# 事件监听与广播(更好的处理方法)

很好理解就不罗嗦了直接上代码

    public class CustomEventListener
    {
        public CustomEventListener() { }

        public delegate void ListenerDelegate(object evt);
        public event ListenerDelegate OnEvent;

        public void Excute(object evtParams)
        {
            if (OnEvent != null)
            {
                this.OnEvent(evtParams);
            }
        }
    }

    public class EventManager
    {
        private static Dictionary<string, CustomEventListener> eventListenerDict = new Dictionary<string, CustomEventListener>();

        public static void AddListener(string eventType, CustomEventListener.ListenerDelegate callback)
        {
            if (!eventListenerDict.ContainsKey(eventType))
            {
                eventListenerDict.Add(eventType, new CustomEventListener());
            }
            eventListenerDict[eventType].OnEvent += callback;
        }

        public static void RemoveListener(string eventType, CustomEventListener.ListenerDelegate callback)
        {
            if (eventListenerDict.ContainsKey(eventType))
            {
                eventListenerDict[eventType].OnEvent -= callback;
                callback = null;
            }
        }

        public static void Dispatch(string eventType, object eventParams = null)
        {
            if (eventListenerDict.ContainsKey(eventType))
            {
                CustomEventListener eventListener = eventListenerDict[eventType];
                if (eventListener == null) return;
                eventListener.Excute(eventParams);
            }
        }

        public static bool HasListener(string eventType)
        {
            return eventListenerDict.ContainsKey(eventType);
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值