///抽象泛型单例主类
using UnityEngine;
using System.Collections;
public abstract class Singleton<T> : MonoBehaviour
where T : MonoBehaviour
{
private static T m_instance = null;
public static T Instance
{
get { return m_instance; }
}
protected virtual void Awake()
{
m_instance = this as T;
}
}
///使用
using UnityEngine;
public class Main : Singleton<Main>
{
#region member variables
public GameObject meowWork;
public AudioClip[] audioClips;
#endregion
#region member methods
protected override void Awake()
{
//this.CreatSuperDog();
base.Awake();
GameObject audio = new GameObject("AudioMgr");
audio.transform.SetParent(transform);
this.gameObject.AddComponent<GameUI>();
this.gameObject.AddComponent<GameMgr>();
this.gameObject.AddComponent<EffectMgr>();
this.gameObject.AddComponent<AudioMgr>();
this.gameObject.AddComponent<EventMgr>();
this.gameObject.AddComponent<TimerMgr>();
this.gameObject.AddComponent<GameData>();
this.gameObject.AddComponent<TouchMgr>();
}
void CreatSuperDog()
{
if (GameObject.FindGameObjectWithTag("meow") == null)
{
Instantiate<GameObject>(meowWork);
}
else
{
print("存在,无需添加");
}
}
#endregion
}