首页 > Unity3D频道 > 【Unity杂文】 > C#事件管理器清空所有监听
2020
07-14

C#事件管理器清空所有监听

C#事件使用+= -=使用起来是很方便的,但是却不能整体清空所有事件。比如一个常见的操作,打开界面注册监听事件,关闭界面需要把所有的事件清空了,这要在写一堆-=操作,如果漏清空的话肯定会造成隐患,如果在lua里这个很容易,但是C#却不行。所以我想了个办法,对Action和Func进行一次包装,就可以解决这个问题了。

这里我只封装了两个参数,大家可以继续拓展新的参数,我在项目里一共拓展了5个参数,完全够用了。

使用方法如下,注意我们自己封装的事件必须要new。

事件管理器可以放在UI或者模块的基类中,这样子类在写的时候可以直接this.RegAction注册事件,关闭界面或者卸载模块的时候由父类调用Clear方法,这样业务逻辑就不需要在写-=这样的代码了。

欢迎大家互相讨论。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

C#事件管理器清空所有监听》有 7 条评论

  1. zhhasd 说:

    直接用unity内置的UnityEvent如何?直接就有removeall的方法

  2. 征风万里 说:

    假如有一个独立的模块专门管理事件的监听,那是不是不存在这个问题了

    • 雨松MOMO 说:

      得看怎么实现了, 因为注册的地方的类对象已经没有了,但是它的方法注册还存在,要把这个方法移除才行。

  3. clown 说:

    action=null,是不是就等于清空了?

  4. fufu 说:

    支持一下

  5. minos 说:

    虽然感觉有些鸡肋,但还是赞一个

留下一个回复

你的email不会被公开。