在Unity提供的事件注册基础上,实现一个更加灵活的事件系统。 Event 首先,为所有可能的事件定义一个公用的事件基类。该基类包含:事件的发起者(UNITY对象)、要求响应的方式(同步或异步)以及事件是否在处理后销毁。 public abstract class Event : IDisposable { private GameObject publisher; private bool responce; private bool disposeAfterUsed; } 那么,任何类型只要继承自Event,就可以作为一个事件在MessageSystem里面进行发布和监听。当然,如果每种事件都单独写一个类型,或许会使得类的数量过多,可以将同模块下的所有事件封装到一个Event的子类当中,再通过字符串或枚举等方式进行二次查找。比如如下方式: public class NetWorkConnectionEvent : Event{ ... enum Type{ EventType1, EventType2, ... } ...