Unity 单例

举报
福州司马懿 发表于 2021/11/19 02:59:12 2021/11/19
【摘要】 管理类的实现方式通常可以很方便地访问,我们一般使用单例模式来实现管理类。 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;
    }
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果我们只是做数据缓存或者常用的函数抽象,不需要使用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; 
        }
    }
}
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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