Unity-门面模式(程序的入口类)
程序的入口类
public class AppFacade : MonoBehaviour
{
private static AppFacade _instance;
static Dictionary<string, object> m_Managers = new Dictionary<string, object>();
public AppFacade()
{
}
public static AppFacade Instance {
get {
if (_instance == null)
{
_instance = new AppFacade();
}
return _instance;
}
}
/// <summary>
/// 添加管理器
/// </summary>
public void AddManager(string typeName, object obj)
{
if (!m_Managers.ContainsKey(typeName))
{
m_Managers.Add(typeName, obj);
}
}
/// <summary>
/// 添加Unity对象
/// </summary>
public T AddManager<T>(string typeName) where T : Component
{
object result = null;
m_Managers.TryGetValue(typeName, out result);
if (result != null)
{
return (T)result;
}
Component c = this.gameObject.AddComponent<T>();
m_Managers.Add(typeName, c);
return default(T);
}
/// <summary>
/// 获取系统管理器
/// </summary>
public T GetManager<T>(string typeName) where T : class
{
if (!m_Managers.ContainsKey(typeName))
{
return default(T);
}
object manager = null;
m_Managers.TryGetValue(typeName, out manager);
return (T)manager;
}
/// <summary>
/// 删除管理器
/// </summary>
public void RemoveManager(string typeName)
{
if (!m_Managers.ContainsKey(typeName))
{
return;
}
object manager = null;
m_Managers.TryGetValue(typeName, out manager);
Type type = manager.GetType();
if (type.IsSubclassOf(typeof(MonoBehaviour)))
{
GameObject.Destroy((Component)manager);
}
m_Managers.Remove(typeName);
}
}

浙公网安备 33010602011771号