Unity 单例

举报
福州司马懿 发表于 2021/11/19 02:59:12 2021/11/19
1.8k+ 0 0
【摘要】 管理类的实现方式通常可以很方便地访问,我们一般使用单例模式来实现管理类。 Unity使用单例的时候分两种: 第一种是挂载在游戏对象上,需要继承MonoBehaviour第二种则不需要继承MonoBeh...

管理类的实现方式通常可以很方便地访问,我们一般使用单例模式来实现管理类。

Unity使用单例的时候分两种:

  • 第一种是挂载在游戏对象上,需要继承MonoBehaviour
  • 第二种则不需要继承MonoBehaviour

第一种继承MonoBehaviour,主要使用它内部的函数,比如常用的Update

public class SingletonUnity<T>: MonoBehaviour where T : MonoBehaviour {
    protected static T instance = null;
    public static T Instance {
        instance = (T)FindObjectOfType(typeof(T));
        if(instance == null) {
            Debug.LogError("An instance of " + typeof(T) + " is needed in the scene");
        }
        return instance;
    }
}
  
 

如果我们只是做数据缓存或者常用的函数抽象,不需要使用Update等MonoBehaviour内部的函数,建议使用此单例

public class Singleton<T> where T : new() {
    protected static T instance = default(T);
    public static T Instance() {
        get {
            if(instance == null) {
                instance = new T();
            }
            return instance; 
        }
    }
}
  
 

文章来源: blog.csdn.net,作者:福州-司马懿,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/chy555chy/article/details/79277864

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。