单例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Singleton<T> where T:class,new()
{
private static T ins;
public static T Ins
{
get
{
if (ins==null)
{
ins = new T();
}
return ins;
}
}
}
消息中心:
```csharp
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MessageCenter:Singleton<MessageCenter>
{
private 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[] info)
{
if (dic.ContainsKey(id))
{
dic[id](info);
}
}
}