Singleton Model In Unity
Unity中的单例模式
如何实现一个单例模式基类?
我们知道单例类需要具备这些东西:
- 全局唯一的实例
- 提供给外部的访问点
单例模式类一般是在整个生命周期中唯一的,用于管理的类。
在这里,我将介绍一个最简单的单例模式基类,以后可以直接继承该基类以实现单例模式。
1 | public class BaseMng<T> where T: new() |
Q1:在Unity中,只有继承了MonoBehaviour的类才能绑定在对象上,这不就意味着继承这个基类的单例模式类不能绑定在对象上吗?
A:没错!!!:)确实不能绑定在场景上的对象上,但是要绑定在对象上干啥呢?
Q2:当然是能更直观的看到场景中哪些管理器在运作,知道场景中有多少个管理器对象。
A:好吧!:)那我就实现一个可以绑定在场景对象上的单例模式基类。
分析一下,
- 可以绑定在对象上 = 继承了MonoBehaviour类
- 要在场景中有管理器对象 = 自己创建一个对象
- 保证唯一 = 过场景时不删除
1 | //- 更改1:这里让基类继承MonoBehaviour类,之所以约束泛型T为MonoBehaviour,是因为AddComponent<T>()约束T为Component类型,为了让T满足这个约束,让T为MonoBehaviour类型,MonoBehaviour的父类是Behaviour,Behaviour的父类是Component,根据里氏转换原则能够用父类容器装子类对象,可以这样使用 |
这样一来,就完成了可以继承MonoBehaviour的基类。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Turok's Laputa!
