hellbound/Assets/Scripts/Core/Utils/LazySingleton.cs

17 lines
469 B
C#

using System;
using UnityEngine;
public abstract class LazySingleton<T> : MonoBehaviour where T: MonoBehaviour
{
public static T Instance => _lazyInstance.Value;
private static readonly Lazy<T> _lazyInstance = new Lazy<T>(CreateSingleton);
private static T CreateSingleton()
{
var ownerObject = new GameObject($"{typeof(T).Name} (singleton)");
DontDestroyOnLoad(ownerObject);
return ownerObject.AddComponent<T>();;
}
}