Unity3D singleton mode writing

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

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

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

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

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

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

Guess you like

Origin blog.csdn.net/qq_36382679/article/details/113763124