1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
01:不继承MonoBehaviour的类实现单利
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。
这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
class singleTemp
{
//私有化类实例
private static singleTemp _instance=new singleTemp();
//让构造函数为 private,这样该类就不会被其他类实例化
private singleTemp()
{
}
//提供外界唯一可以访问类实例的方法
public static singleTemp instance
{
get
{
return _instance;
}
}
public void show()
{
Console.WriteLine("single show");
}
}
02:实泛型单利模板类
public class singleTemplate<T> where T : new() //where T : new() 为泛型约束,确保T类型是可以被new的
{
private static T _instance; //私有的T类型的静态变量
public static T GetInstance() //获取实例的函数
{
if (_instance == null) //判断实例是否已存在
{
_instance = new T(); //不存在则创建新的实例
}
return _instance; //返回实例
}
class test:singleTemplate<test>
{
public void show()
{
Console.WriteLine("testshow");
}
}
public class single : MonoBehaviour
{
private static single _instance;
public static single instance
{
get
{
if (_instance==null)
{
_instance = GameObject.FindObjectOfType<single>();
}
return _instance;
}
}
}
public class singleTemplate<T> : MonoBehaviour where T : MonoBehaviour
{
private static T _instance;
public static T instance
{
get
{
if (_instance==null)
{
_instance = GameObject.FindObjectOfType<T>() as T;
}
return _instance;
}
}