using UnityEngine; using System; public class TGSingleton : MonoBehaviour where T : class { private static T _instance; public static T Instance { get { if (_instance == null) { var previous = FindObjectOfType(typeof(T)); if (previous) { _instance = previous as T; } else { string name = typeof(T).ToString(); var go = new GameObject("__"+name); _instance = go.AddComponent(typeof(T)) as T; DontDestroyOnLoad(go); } } return _instance; } } }