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的脚本的值 ,利用泛型作为基类:
public cl

本文探讨了在Unity中如何创建单例模式基类,并特别关注了当单例基类继承自MonoBehaviour时可能遇到的问题。通过泛型避免了在多个游戏对象上拖拽脚本导致的单例破坏,同时提出了防止手动创建额外实例的优化策略。
最低0.47元/天 解锁文章
2474

被折叠的 条评论
为什么被折叠?



