public class DontDestroy<T> : MonoBehaviour where T : DontDestroy<T>
{
private static T instance;
private void Awake()
{
if (instance == null)
instance = this as T;
else
Destroy(gameObject);
DontDestroyOnLoad(gameObject);
}
}
public abstract class GenericSingleTon<T> : MonoBehaviour where T : MonoBehaviour
{
private static T _instance;
public static T instance
{
get
{
if (_instance == null)
{
T[] objectList = Resources.FindObjectsOfTypeAll<T>();
if (objectList.Length > 0)
(objectList[0] as GenericSingleTon<T>).Awake();
}
return _instance;
}
}
private void Awake()
{
if (_instance == null)
_instance = this as T;
}
}