设计模式——泛型单例类

游戏中很多管理类都需要写成单例类,每次重复把管理类设置为单例类很繁琐,

这里直接写一个泛型单例类作为模板父类,方便其他需要写成单例类的类直接继承设置为单例类;

cs 复制代码
using UnityEngine;

public class Singleton<T> : MonoBehaviour where T:Singleton<T>
{
    private static T instance;

    public static T Instance
    {
        get { return instance; }
    }

    public static bool IsInitialized
    {
        get { return instance != null; }
    }

    protected virtual void Init()
    {
        if (instance != null) Destroy(gameObject);
        else instance = (T)this;
    }

    protected virtual void Destroy()
    {
        if (instance == this) instance = null;
    }
}

其他要写成单例类的类,可以直接继承Singleton,示例如下:

cs 复制代码
using UnityEngine;

public class GameManager : Singleton<GameManager>
{
    protected override void Init()
    {
        base.Init();
        if (IsInitialized) Debug.Log("游戏初始化!");
    }
}
相关推荐
多加点辣也没关系9 小时前
设计模式-解释器模式
设计模式·解释器模式
Asurplus12 小时前
23中设计模式
设计模式·创建型·结构型·行为型
geovindu12 小时前
go: Semaphore Pattern
开发语言·后端·设计模式·golang·企业级信号量模式
basketball61614 小时前
C++ 单例模式完全指南:从饿汉式到现代 C++ 的最佳实践
java·c++·单例模式
音视频牛哥14 小时前
大牛直播SDK(SmartMediaKit)Android平台Unity3D RTSP/RTMP播放器集成实践
android·unity3d·rtsp播放器·rtmp播放器·unity3d rtmp播放器·安卓unity rtsp播放器·安卓unity rtmp播放器
写了20年代码的老程序员17 小时前
写了 20 年 Java,我发现 90% 的 if-null 和 try-catch 其实是因为缺了一条原则
设计模式·ai编程
货拉拉技术20 小时前
私域转化率翻倍的秘密:我们把多模态Agent融进了私域营销
人工智能·算法·设计模式
看山是山_Lau20 小时前
抽象工厂模式:一整套对象族如何统一创建?
设计模式·抽象工厂模式
木易 士心20 小时前
深入理解 OKHttp:设计模式、核心机制与架构优势
android·设计模式·架构
SmalBox21 小时前
【节点】[HyperbolicTangent节点]原理解析与实际应用
unity3d·游戏开发·图形学