事件系统的好处很多,最主要的还是能够最大限度的降低模块间的耦合度,这里实现一个很简单的事件管理系统,主要功能就是对事件进行分发,以达到解偶的目的。事件系统很多新手好像不太适应,但是用的多了,就会发现它的神奇之处。
直接上代码:
public class EventManager : MonoBehaviour{
Dictionary<EventID,List<EventObserver>> observerList = new Dictionary<EventID,List<EventObserver>>();
Queue eventQueue = new Queue(); //消息队列
private static EventManager _instance = null;
public static EventManager instance()
{
return _instance;
}
void Awake(){
Debug.Log("===========启动消息系统===========");
_instance = this;
}
void Update(){
while(eventQueue.Count > 0){
EventData eve = (EventData)eventQueue.Dequeue();
if(!observerList.ContainsKey(eve.eid)){
continue;
}
List<EventObserver> observers = observerList[eve.eid];
for(int i = 0 ; i < observers.Count ; i ++){
if(observers[i] == null) continue;
observers[i].HandleEvent(eve);
}
}