Unity单例模式写法

本文介绍了Unity中三种不同的单例模式实现方式,包括最简单的单例实现、更规范的单例实现以及不依赖于GameObject的单例实现。此外还提到了两种额外的单例模式,这些模式有助于确保游戏开发中的单例对象正确且高效地被创建和使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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#语言面向对象的特点(封装、继承、多态),对我们的单例进行一个更好的规范。

还有两种写法,不过我目前是没碰到,我也转载过来了,有兴趣的可以往下看。
在这里插入图片描述
在这里插入图片描述

单例五:最终版E — 不继承于MonoBehaviour(不随着场景切换而销毁)

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值