Unity单例模式较为简单的理解

本文将介绍unity中单例模式从最简单到复杂的实际使用。

单例模式是一种设计模式,设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

首先书写一个最简单的单例模式,这个类的成员变量就是一个自己的对象,并且初始化的时候将这个变量设置为自己。

然后我们将这个脚本给某个对象:

此时这个脚本的实例就是它自己本身。

然后我们就可以在另外的脚本中,直接调用该类.实例.方法的方式直接调用该类里的函数:

扫描二维码关注公众号,回复: 13717887 查看本文章

一般来说,不需要继承MonoBehaviour。

接下来对单例模式进行细化讲解:

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

在这里插入图片描述

一般情况下我们都会把类的构造器定义成public的访问权限,允许任何类在任何情况下都可以创建该类的对象。但是某些情况下允许其它类自由创建该类的对象没有任何意义,甚至还可能造成系统性能的下降,因为频繁地创建对象和回收对象会带来系统的开销问题。

如果一个类始终只能创建一个实例,则这个类被称为单例类。
使用起来有三个限制:

  1. 总之,在一些特殊场景下,为了避免其他类自由创建该类的对象,应该把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。
  2. 根据良好的封装原则:一旦把该类的构造器隐藏起来,就需要提供一个public方法作为该类的访问入口,用于创建该类的对象,且该方法必须使用static修饰,因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类。
  3. 除此之外,该类还必须缓存已经创建的对象,否则该类无法知道是否已经创建过对象,也就无法保证只创建一个对象。为此该类需要使用一个成员变量来保存曾经创建的对象,因为该成员变量需要被上面的静态方法访问,所以该成员变量必须使用static修饰。

因此,代码如下:

在这里插入图片描述

在unity中,上面的获取实例的方法可以变为使用一个public变量,然后设置其get方法即可,代码如下:

(而构造函数缺失则系统会自动生成,因此这里可以不用写)

随后即可在其他地方直接对其直接调用类名.Instance.类里的方法即可。

猜你喜欢

转载自blog.csdn.net/weixin_43757333/article/details/122849326