Factory/FactorySingleton.cs

29 lines
893 B
C#
Raw Normal View History

2022-11-21 13:33:46 +03:00
using UnityEngine;
namespace Syntriax.Modules.Factory
{
public abstract class FactorySingleton<T> : MonoBehaviour, IFactory where T : Component, IFactory
{
public const string ParentName = "Factories";
private static T _instance = null;
public static T Instance
{
get
{
if (_instance == null)
{
GameObject factoriesGO = GameObject.Find(ParentName) ?? new GameObject(ParentName);
_instance = new GameObject(nameof(T)).AddComponent<T>();
_instance.transform.SetParent(factoriesGO.transform);
DontDestroyOnLoad(factoriesGO);
}
return _instance;
}
}
public void Initialize() => Instance.Initialize();
public void Reset() => Instance.Reset();
}
}