含义
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
而在Untiy当中,我们通常需要一个脚本去记录与管理一些贯穿整个游戏场景伊始的数据,比如玩家的成绩,生命值,关卡等级等等,这个时候就需要一个脚本始终处于被唤醒状态,并且只有一个,而这个时候,单例模式则是最好的解决方案。
单例的应用
实现方式一
优点:不需要重构什么,直接编码。方便其他类使用。
缺点:每个要实现单例的类都需要手动写上相同的代码,代码重复对我们来说可不是好事情。同时需要把实现单例的类手动绑定到游戏对象上才可以使用。
实现方式二
优点:通过代码重构,去除掉了重复的代码。想具有单例功能的类。只需要继承模板基类就可以具有单例的作用。
缺点:模板单例不需要绑定到游戏对象,但是被其他脚本调用的需要手动绑定到游戏对象上才可以使用。
实现方式三
继承模板基类,实现方式同方式二里的第二步一样。
优点:不需要手动绑定单例到游戏对象就可以使用。
缺点:这些都是游戏对象,在Untiy中只能在主线程中进行调用。所以网络多线程方面会产生单例的不唯一性,在这里就可以忽略了。