2种单例模式: 继承自MonoBehaviour的单例和普通的单例模式.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MB_Singleton<T> : MonoBehaviour where T : MB_Singleton<T>
{
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<T> 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<Test2>
{
public int a = 3;
// Use this for initialization
void Awake()
{
Test2.SetInstance(this);
}
}
继承自Monobehaviour的单例取字段的方式 int a = Test2.Get().a; 普通方法的单例调用参考下篇----事件模式.