Unity单例模式写法
看到一篇文章总结的,想转载一波
单例一:最简单最常用的写法 A — 继承于MonoBehaviour
public class Singleton : MonoBehaviour
{
public static Singleton instance;
private void Awake()
{
instance = this;
}
}
在另一个类中调用,Singleton.instance.(方法)。
单例二:升级版单例方法 B — 继承于MonoBehaviour
这个方法,我总是可以在别人的项目里看见,后来才知道这比第一种规范。
public class Singleton : MonoBehaviour
{
public static Singleton instance;
public static Singleton Instance
{
get {
if (instance==null)
{
instance = FindObjectOfType(typeof(Singleton)) as Singleton;
//或者 instance=new GameObject("[Singleton]").AddComponent<Singleton>();
}
return instance;
}
}
}
在另一个类中调用,Singleton.instance.(方法)。
单例三:单例方法 C — 不继承于MonoBehaviour
我还碰见一些单例是没有继承的,也就是没有挂在到物体身上的
public class Singleton
{
public static Singleton instance;
public static Singleton Instance
{
get {
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}
在另一个类中调用,Singleton.instance.(方法)。
总结:上述的单例方法中,我们可以进行归纳。其实就是继承和不继承 MonoBehaviour 的单例方法,接下来我们将用到C#语言面向对象的特点(封装、继承、多态),对我们的单例进行一个更好的规范。
还有两种写法,不过我目前是没碰到,我也转载过来了,有兴趣的可以往下看。
在这里插入图片描述