当前位置:首页 >> 核电技术聚变聚能设备 >> 【Unity程序技巧】Unity中的单例模式的运用,小米雷军演讲直播

【Unity程序技巧】Unity中的单例模式的运用,小米雷军演讲直播

cpugpu芯片开发光刻机 核电技术聚变聚能设备 1
文件名:【Unity程序技巧】Unity中的单例模式的运用,小米雷军演讲直播 【Unity程序技巧】Unity中的单例模式的运用


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity基础实战

⭐🅰️⭐

文章目录 ⭐🅰️⭐⭐前言⭐🎶(==1==)未继承Mono的单例模式 🎶(==2==)通用单例模式的基类泛型模板🎶(==3==)继承Mono的单例模式🎶(==4==)继承Mono的单例模式的泛型模板🎶(==5==)单例模式的泛型模板自动添加⭐🅰️⭐


⭐前言⭐

菜鸟教程

“单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。”

有错误的地方在于new 的部分
🎶(1)未继承Mono的单例模式
脚本: public class GameManagers{private static GameManagers instance;public static GameManagers GetInstance(){if (instance == null) instance = new GameManagers();return instance;}}
🎶(2)通用单例模式的基类泛型模板
脚本: 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>{}
🎶(3)继承Mono的单例模式
脚本: public class Single : MonoBehaviour{private static Single singleControl;public static Single SingleControl => singleControl;private void Awake(){singleControl = this;}} 存在的问题

不要在此处new了


🎶(4)继承Mono的单例模式的泛型模板
脚本: 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();}} 缺点:
🎶(5)单例模式的泛型模板自动添加
之前的那种模式,当我们连续把单例模式脚本拖拽两次就会破坏单例模式的唯一性避免了手动拖拽脚本才可以激活单例模式 ,自动添加单例模式,想用就直接调用方法 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#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、



协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接