1234567891011121314151617181920 |
- using System;
- using UnityEngine;
- namespace SchoenLogger
- {
- public abstract class Singleton<T> : MonoBehaviour where T : MonoBehaviour
- {
- private static readonly Lazy<T> LazyInstance = new Lazy<T>(CreateSingleton);
- public static T Instance => LazyInstance.Value;
- private static T CreateSingleton()
- {
- var ownerObject = new GameObject($"{typeof(T).Name} (singleton)");
- var instance = ownerObject.AddComponent<T>();
- DontDestroyOnLoad(ownerObject);
- return instance;
- }
- }
- }
|