异星飞行开发之——01单例模式

74 阅读1分钟

我们可以声明一个泛型T,用来让每个继承这个类的都用这个T来表示

//where T 表示给T设置限制,class表示这是一个类,new代表能够创建对象,new必须放在最后一个
public class NormalSingleton<T> where T : class, new()
{
//静态字段
    private static T _single;
    //静态属性
    public static T Single
    {
        get
        {
            //先判断字段是否赋值过,为不为空
            if (_single == null)
            {
               //若为空 NEW一个对象
                T t = new T();
                //查看这个对象是否继承Monobehaviour,若继承过,则可以使用mono的单例进行继承
                if (t is MonoBehaviour)
                {
                    Debug.LogError(message: "Mono类请使用MonoSingleton");
                }
                //将这个对象给_single
                _single = t;
            }
            //返还值
            return _single;
        }
    }
}

在使用单例类的时候,字段必须声明为属性,只能通过方法或者属性的方法使用单例