个人主页:@元宇宙-秩沅
hallo 欢迎 点赞 收藏⭐ 留言 加关注✅!
本文由 秩沅 原创
收录于专栏:Unity基础实战
菜鸟教程
“单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。”
public class GameManagers
{
private static GameManagers instance;
public static GameManagers GetInstance()
{
if (instance == null) instance = new GameManagers();
return instance;
}
}
public class GameManagers<T> where T : new()
{
private static T instance;
public static T GetInstance()
{
if (instance == null) instance = new T();
return instance;
}
}
//继承单例模式泛型模板的基类
public class BaseContorl : GameManagers<BaseContorl>
{
}
public class Single : MonoBehaviour
{
private static Single singleControl;
public static Single SingleControl => singleControl;
private void Awake()
{
singleControl = this;
}
}
不要在此处new了
public class SingleBase<T> : MonoBehaviour where T : MonoBehaviour
{
private static T singleControl;
public static T SingleControl => singleControl;
//保护类型的虚函数,可供子类重写
protected virtual void Awake()
{
singleControl = this as T;
}
}
//当子类继承单例模式的泛型模板的时候
public class GameContorls : SingleBase<GameContorls>
{
protected override void Awake()
{
//子类需要要重写,因为示例返回需要执行
base.Awake();
}
}
public class SingleBase<T> : MonoBehaviour where T : MonoBehaviour
{
private static T instance;
public static T Geteinstance()
{
if (instance == null)
{
//用代码创建一个新对象并且添加单例模式脚本
GameObject obj = new GameObject();
//设置对象的名字为脚本的名字
obj.name = typeof(T).ToString();
//instance就等于添加的这个脚本
instance = obj.AddComponent<T>();
//为了保证换场景的时候单例模式还存在
DontDestroyOnLoad(obj);
}
return instance;
}
}
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞 收藏⭐ 留言 关注✅是我持续创作,输出优质内容的最大动力!、