monobehavier单例模板

using UnityEngine;

using System.Collections;

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour

{

    private static T _instance;

    private static object _lock = new object();

    private static bool applicationIsQuitting = false;

    public static T Instance

    {

        get

        {

            if (applicationIsQuitting)

            {

                return null;

            }

            lock (_lock)

            {

                if (_instance == null)

                {

                    _instance = (T)FindObjectOfType(typeof(T));

                    if (FindObjectsOfType(typeof(T)).Length > 1)

                    {

                        return _instance;

                    }

                    if (_instance == null)

                    {

                        GameObject singleton = new GameObject();

                        _instance = singleton.AddComponent<T>();

                        singleton.name = "(singleton)" + typeof(T).ToString();

                        DontDestroyOnLoad(singleton);

                    }

                }

                return _instance;

            }

        }

    }

    public void OnDestroy()

    {

        applicationIsQuitting = true;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,780评论 18 399
  • About these tips(Edit: August 2016. I have revised these ...
    Francis_Rose阅读 564评论 0 0
  • 废话不多说,自己进入今天的主题 1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:...
    传奇内服号阅读 2,414评论 1 31
  • 第一次在上了大学后的放假时间遇见艾由布了,他出门来望望风景。好久没碰面的两个人自己端详着彼此,用很不生硬的方...
    木头人与山姆狗阅读 305评论 0 1
  • 今天快下班的时候,来了一个病人家属和病人家属。 病人是一个90岁的老太太,他儿子看起来文质彬彬,很有文化。 但是出...
    海皮的女子阅读 250评论 0 0