1、单例模式基类模块
public class BaseManager<T> where T : new {
private static T instance;
public static T GetInstance() {
if (instance == null) {
instance = new T();
}
return instance;
}
}
public class GameManager : BaseManager<GameManager> {
// TODO....
}
2、继承MonoBehaviour的单例模式基类
public class NewBehaviourScript : MonoBehaviour {
private static NewBehaviourScript instance;
public static NewBehaviourScrpt GetInstance() {
if (instance == null) {
// 继承了Mono的脚本不能够直接new
// 只能通过拖曳或者加脚本,U3D帮助实例化
// 因此一定会执行Awake,所以在Awake初始化
return instance;
}
}
void Awake() {
instance = this;
}
}
但是注意这样有一个问题,如果多个物体绑定了这个脚本,那么instance就会是最后执行Awake的脚本的值 ,利用泛型作为基类ÿ