unity - 饿汉单例与懒汉单例的实现与特性讲解

#饿汉单例
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;
}