Unity单例模式(普通单例和继承MonoBehaviour的单例)

Posted Unity3D杂货铺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity单例模式(普通单例和继承MonoBehaviour的单例)相关的知识,希望对你有一定的参考价值。

       单例类是开发过程中必不可少的东西。介绍完两个常用单例类型后会介绍一个简单却很实用的MonoEvent。一样,代码都是截图,想复制源码的点阅读原文。

       关于单例的写法网上有很多,这篇文章主要想介绍的是MonoEvent以及为之后的计时器做准备。还有就是以后的文章肯定会有好多涉及到单例模式的代码,为了不重复写,先把单例的类贴上来。

一.普通单例

       最普通的写法,加了个线程锁,通过属性访问,不光是Unity,所有的c#程序都能用。直接上代码

      普通单例类的构造有两种方式,看习惯,个人比较喜欢第一种,调用的时候可以少写一个单词一对括号。

1.通过继承单例基类

    构造:

    public class MyClass:Singleton<MyClass>{ }

    调用:

    MyClass.Instance.MethodName

2.不继承单例基类

    构造:

    public class MyClass { }

    调用:

    Singleton<MyClass>.Instance.MethodName


二.继承MonoBehaviour的单例

    这个单例的使用要注意两点

    1.不建议手动在Scene中的某个GameObject上挂载继承Mono的单例类,调用的时候代码会自动创建。

    2. 除了后面的MonoEvent,尽量不要有其他的类继承MonoSingleton

(谷歌浏览器有个扩展应用叫  FireShot,可以截长图)


Unity单例模式(普通单例和继承MonoBehaviour的单例)

三.MonoEvent

      很多时候,我们写的类并不想继承MonoBehaviour,但是我们又想这个类能够在Mono的生命周期里做一些事。比如Update,那么我们可以这样写

MonoEvent.Instance.UPDATE += MethodName

Unity单例模式(普通单例和继承MonoBehaviour的单例)


不得不说南京的江边还是很美的,大爷们很惬意,钓着鱼放着风筝听着收音机,伴随着过往船只的汽笛声,很是舒心。那里没有城市的喧嚣却又可以了解这座城市的过往。

以上是关于Unity单例模式(普通单例和继承MonoBehaviour的单例)的主要内容,如果未能解决你的问题,请参考以下文章

Unity 单例模式

Java中的单例和继承

spring单例和非单例的问题

单例和注册表设计模式有啥区别

java单例和多例

Spring中单例和多例模式