| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- namespace UniFramework.Event
 
- {
 
- 	public class EventGroup
 
- 	{
 
- 		private readonly Dictionary<System.Type, List<Action<IEventMessage>>> _cachedListener = new Dictionary<System.Type, List<Action<IEventMessage>>>();
 
- 		/// <summary>
 
- 		/// 添加一个监听
 
- 		/// </summary>
 
- 		public void AddListener<TEvent>(System.Action<IEventMessage> listener) where TEvent : IEventMessage
 
- 		{
 
- 			System.Type eventType = typeof(TEvent);
 
- 			if (_cachedListener.ContainsKey(eventType) == false)
 
- 				_cachedListener.Add(eventType, new List<Action<IEventMessage>>());
 
- 			if (_cachedListener[eventType].Contains(listener) == false)
 
- 			{
 
- 				_cachedListener[eventType].Add(listener);
 
- 				UniEvent.AddListener(eventType, listener);
 
- 			}
 
- 			else
 
- 			{
 
- 				UniLogger.Warning($"Event listener is exist : {eventType}");
 
- 			}
 
- 		}
 
- 		/// <summary>
 
- 		/// 移除所有缓存的监听
 
- 		/// </summary>
 
- 		public void RemoveAllListener()
 
- 		{
 
- 			foreach (var pair in _cachedListener)
 
- 			{
 
- 				System.Type eventType = pair.Key;
 
- 				for (int i = 0; i < pair.Value.Count; i++)
 
- 				{
 
- 					UniEvent.RemoveListener(eventType, pair.Value[i]);
 
- 				}
 
- 				pair.Value.Clear();
 
- 			}
 
- 			_cachedListener.Clear();
 
- 		}
 
- 	}
 
- }
 
 
  |