Unity编程笔记----单例模式

2种单例模式:  继承自MonoBehaviour的单例和普通的单例模式.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MB_Singleton : MonoBehaviour where T : MB_Singleton
{
    private static T _instance;
    public static T Get()
    {
        return _instance;
    }

    public static void SetInstance(T t, bool fore = false)
    {
        if (_instance == null || fore)
            _instance = t;
    }
}

public class Singleton where T : new()
{
    private static T _instance;
    public static T Get()
    {
        if (_instance == null)
        {
            _instance = new T();
        }
        return _instance;
    }

    public static T Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new T();
            }
            return _instance;
        }
    }
}

方法的调用:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test2 : MB_Singleton
{
    public int a = 3;
    // Use this for initialization
    void Awake()
    {
        Test2.SetInstance(this);
    }
}
继承自Monobehaviour的单例取字段的方式   int a = Test2.Get().a;  普通方法的单例调用参考下篇----事件模式.




你可能感兴趣的:(Unity编程笔记----单例模式)