hand
_1_7_139
4
返回栏目
1k
0.2k
0.5k
0.1k
0k
0.2k
0k
0.7k
0k
0k
0.4k
0.1k
4k
0.2k
0.1k
2k
0.2k
0.2k
0k
0k
0.5k
0k
0.9k
0.1k
1k
0.9k
2k
1k
2k
0.9k
1k
0k
1k
0k
1k
1k
1k
1k
0k
1k
1k
1k
0k
3k
1k
0k
0.3k
1k
0.3k
0.9k
0k
8k
9k
6k
2k
1k
2k
1k
1k
2k
0.6k
1k
0.6k
1k
0.5k
0.2k
2k
2k
2k
1k
2k
0k
0.8k
0.8k
1k
0k
0k
0k
0k
0k
0k
0k
0k
0.3k
0.4k
0.8k
0.3k
5k
1k
3k
7k
6k
3k
3k
1k
0.2k
2k
3k
2k
0.4k
0.5k
3k
2k
7k
3k
4k
2k
1k
6k
6k
1k
1k
0.9k
0.2k
0.3k
0.9k
1k
0k
0.8k
2k
0k
0.4k
0.1k
1k
0.9k
0.2k
1k
1k
0.5k
0k
0k
0.4k
4k
0.4k
2k
3k
1k
1k
1k
3k
5k
0k
1k
2k
0.5k
0k
1k
0k
1k
0.5k
0.8k
返回Unity - 游戏引擎栏目
作者:
贺及楼
成为作者
更新日期:2023-09-17 11:01:00
EventCenter.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//里氏转换的空接口
public interface IEventInfo { }
public class EventInfo<T> : IEventInfo
{
public UnityAction<T> actions;
public EventInfo(UnityAction<T> action)
{
actions += action;
}
}
public class EventInfo : IEventInfo
{
public UnityAction actions;
public EventInfo(UnityAction action)
{
actions += action;
}
}
//事件中心
public class EventCenter : BaseManager<EventCenter>
{
private Dictionary<string, IEventInfo> eventDic = new Dictionary<string, IEventInfo>();
/// <summary>
/// 添加事件监听+泛型
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void AddEventListener<T>(string name, UnityAction<T> action)
{
//字典有
if (eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo<T>).actions += action;
}
//无
else
{
eventDic.Add(name, new EventInfo<T>(action));
}
}
/// <summary>
/// 添加事件监听 无泛型
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void AddEventListener(string name, UnityAction action)
{
//字典有
if (eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo).actions += action;
}
//无
else
{
eventDic.Add(name, new EventInfo(action));
}
}
/// <summary>
/// 移除监听+泛型
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void RemoveEventListener<T>(string name, UnityAction<T> action)
{
if (eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo<T>).actions -= action;
}
}
/// <summary>
/// 移除监听 无泛型
/// </summary>
/// <param name="name"></param>
/// <param name="action"></param>
public void RemoveEventListener(string name, UnityAction action)
{
if (eventDic.ContainsKey(name))
{
(eventDic[name] as EventInfo).actions -= action;
}
}
/// <summary>
/// 事件触发+泛型
/// </summary>
/// <param name="name"></param>
/// <param name="info"></param>
public void EventTrigger<T>(string name, T info)
{
//字典有
if (eventDic.ContainsKey(name))
{
//eventDic[name]();
//eventDic[name].Invoke(info);
//
if ((eventDic[name] as EventInfo<T>).actions != null)
{
(eventDic[name] as EventInfo<T>).actions.Invoke(info);
}
}
}
/// <summary>
/// 事件触发 无泛型
/// </summary>
/// <param name="name"></param>
/// <param name="info"></param>
public void EventTrigger(string name)
{
//字典有
if (eventDic.ContainsKey(name))
{
//eventDic[name]();
//eventDic[name].Invoke(info);
//
if ((eventDic[name] as EventInfo).actions != null)
{
(eventDic[name] as EventInfo).actions.Invoke();
}
}
}
public void check()
{
Debug.Log(eventDic.Count);
}
//清空事件中心主要在场景切换
public void Clear()
{
eventDic.Clear();
}
}
Unity - 游戏引擎
整章节共151节
快分享给你的小伙伴吧 ~