C#—unity
C#在unity的泛型单例你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
什么是单例模式?是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式的使用我们在使用Unity开发游戏得时候,很多游戏得管理类都是只有一个的。就好像GameMnanager、UIManager这些管理脚本都是唯一的,由一个GameObject游戏运行就可以了,这个时候GameManager、UIManager就可以是一个单例类.单例模式就是为了保证不多创建这种类,来节省消耗,另外实例是全局变量,让获取也变得方便.
例子:
//UI管理器
public class MyUIManager
{
//静态唯一对象
private static MyUIManager _instance;
public static MyUIManager GetInstance()
{
if (_instance == null)
_instance = new MyUIManager();
return _instance;
}
}
什么是泛型单例?
在游戏中可能会有多个单例类,有时候我们为了方便创建,可以先创建一个泛型单例模板,只要哪个类需要用到单例的使用,就是去继承这个泛型单例模板类就可以了。
例子: //通过泛型基类 在基类中实现实例化单例方法 public class BaseInstance泛型单例模式与普通单例模式的区别:where T : new() { private static T _instance; public static T GetInstance() { if (_instance == null) _instance = new T(); return _instance; } } //任意的单例类 只需要继承基类就可以少些一些代码了 public class MyUIManager : BaseInstance { }
普通单例模式:直接在相应脚本(如脚本A)中设置为单例模式,然后在其他脚本(脚本B)调用有单例模式的脚本(脚本A)功能或方法时能直接调用,而不用在awake或者start方法中引用一遍脚本(脚本A),但是当项目管理脚本比较多时,可能每个管理脚本都需要做成单例模式,如果使用普通的单例模式每个都设置一遍也不是不可以,但是泛型单例模式更方便。
泛型单例模式:新创建一个泛型单例模式的脚本,继承于该泛型单例模式脚本的类都可以直接成为单例模式,而不用单独设置;



