单例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Single<T> where T : class, new()
{
private static T _instance;
public static T Instance
{
get
{
if (_instance == null)
{
if (_instance == null)
{
_instance = new T();
}
}
return _instance;
}
}
}
消息中心:
using System;
using System.Collections.Generic;
public class MessageManager :Single<MessageManager>
{
Dictionary<int,Action<object>> dic=new Dictionary<int,Action<object>>();
public void Add(int id, Action<object> action)
{
if(dic.ContainsKey(id))
{
dic[id] += action;
}
else
{
dic.Add(id, action);
}
}
public void Remove(int id,Action<object> action)
{
if (dic.ContainsKey(id))
{
dic[id] -= action;
if (dic[id] == null)
{
dic.Remove(id);
}
}
}
public void Send(int id, params object[] arr)
{
if(dic.ContainsKey(id))
{
dic[id](arr);
}
}
}
文章展示了在Unity3D中使用C#实现泛型单例模式的方法,以及一个基于Dictionary的消息中心类,用于管理事件订阅和发送。MessageManager类允许添加、删除和发送特定ID的事件处理函数。
1767

被折叠的 条评论
为什么被折叠?



