mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-16 12:50:17 +00:00
Update samples
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
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);
|
||||
EventManager.AddListener(eventType, listener);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.LogWarning($"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++)
|
||||
{
|
||||
EventManager.RemoveListener(eventType, pair.Value[i]);
|
||||
}
|
||||
pair.Value.Clear();
|
||||
}
|
||||
_cachedListener.Clear();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user