unity用MVC设计模式一般要用Model层,而model层一般会用到单例模式,而单例写法有一摸一样,所以写个脚本偷懒一下吧一样的代码封装成基类,以后需要单例的model就继承这个积累就可以省去力气去敲单例的代码了。
using System;
using UnityEngine;
using System.Collections;
/// <summary>
/// 不继承MonoBehaviour的单例类(泛型),单例类只要继承此类就行
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class Singleton<T>where T:new()
{
private static T instance;
/// <summary>
/// 它的继承类不需在写得到单例的方法
/// </summary>
/// <returns></returns>
public static T GetInstance()
{
if (instance == null)
{
instance = new T();
}
return instance;
}
/// <summary>
/// 在继承类中重写此方法可以将继承类的实例清空
/// </summary>
public virtual void Dispose()
{
instance = default(T);
}
}
ps:因为MonoBehaviour类不能被new,所以已经继承了MonoBehaviour的类就不要继承这个类了,会报错的。