unity - 餓漢單例與懶漢單例的實(shí)現(xiàn)與特性講解

#餓漢單例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 餓漢單例
/// </summary>
public class HungryManSingleton : MonoBehaviour
{
private static HungryManSingleton Singleton;
public static HungryManSingleton Instance { get => Singleton; }
public string csName;
private void Awake()
{
if (Singleton == null)
{
Singleton = this;
}
else
{
Destroy(this.gameObject);
}
}
}
#懶漢單例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 懶漢單例
/// </summary>
public class SlackerSingleton : MonoBehaviour
{
private static SlackerSingleton Singleton;
public static SlackerSingleton Instance
{
get
{
if (Singleton != null)
return Singleton;
Singleton = FindObjectOfType<SlackerSingleton>();
if (Singleton == null)
{
Singleton = new SlackerSingleton();
}
else
{
foreach (var item in FindObjectsOfType<SlackerSingleton>())
{
if (item.gameObject.GetComponent<SlackerSingleton>() != Singleton)
Destroy(item.gameObject);
}
}
return Singleton;
}
}
public string csName;
}