最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity通用泛型單例設(shè)計(jì)模式(普通型和繼承自MonoBehaviour)

 更新時(shí)間:2020年07月18日 09:14:06   作者:汐夜  
這篇文章主要介紹了Unity通用泛型單例設(shè)計(jì)模式,分為普通型和繼承MonoBehaviour,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

單例模式是設(shè)計(jì)模式中最為常見的,不多解釋了。但應(yīng)該盡量避免使用,一般全局管理類才使用單例。

普通泛型單例:

public abstract class Singleton<T> where T : class, new()
{
  private static T instance = null;

  private static readonly object locker = new object();

  public static T Instance
  {
    get
    {
      lock (locker)
      {
        if (instance == null)
          instance = new T();
        return instance;
      }
    }
  }
}

繼承MonoBehaviour的泛型單例:

using UnityEngine;

public abstract class MonoSingleton <T>: MonoBehaviour where T:MonoBehaviour
{
  private static T instance = null;

  private static readonly object locker = new object();

  private static bool bAppQuitting;

  public static T Instance
  {
    get
    {
      if (bAppQuitting)
      {
        instance = null;
        return instance;
      }

      lock (locker)
      {
        if (instance == null)
        {
          instance = FindObjectOfType<T>();
          if (FindObjectsOfType<T>().Length > 1)
          {
            Debug.LogError("不應(yīng)該存在多個(gè)單例!");
            return instance;
          }

          if (instance == null)
          {
            var singleton = new GameObject();
            instance = singleton.AddComponent<T>();
            singleton.name = "(singleton)" + typeof(T);
            singleton.hideFlags = HideFlags.None;
            DontDestroyOnLoad(singleton);
          }
          else
            DontDestroyOnLoad(instance.gameObject);
        }
        instance.hideFlags = HideFlags.None;
        return instance;
      }
    }
  }

  private void Awake()
  {
    bAppQuitting = false;
  }

  private void OnDestroy()
  {
    bAppQuitting = true;
  }
}

使用方法直接用類去繼承這兩個(gè)抽象單例即可,使用T.Instance就可以直接取得該類(T)的唯一實(shí)例了。

以上就是Unity通用泛型單例設(shè)計(jì)模式(普通型和繼承自MonoBehaviour)的詳細(xì)內(nèi)容,更多關(guān)于unity單例設(shè)計(jì)模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Avalonia封裝實(shí)現(xiàn)指定組件允許拖動(dòng)的工具類

    Avalonia封裝實(shí)現(xiàn)指定組件允許拖動(dòng)的工具類

    這篇文章主要為大家詳細(xì)介紹了Avalonia如何封裝實(shí)現(xiàn)指定組件允許拖動(dòng)的工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起來學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C#基礎(chǔ)之異步調(diào)用實(shí)例教程

    C#基礎(chǔ)之異步調(diào)用實(shí)例教程

    這篇文章主要介紹了C#中的異步調(diào)用,對(duì)比同步調(diào)用分析了異步調(diào)用的原理及特點(diǎn),并以實(shí)例形式給出了實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-09-09
  • C#將jpg轉(zhuǎn)換為pdf的方法

    C#將jpg轉(zhuǎn)換為pdf的方法

    這篇文章主要介紹了C#將jpg轉(zhuǎn)換為pdf的方法,主要通過itextsharp.dll文件實(shí)現(xiàn),是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • C#中Json反序列化的實(shí)現(xiàn)方法

    C#中Json反序列化的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于C#中Json反序列化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • C#各類集合匯總

    C#各類集合匯總

    這篇文章主要介紹了C#各類集合的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#開發(fā)簡易winform計(jì)算器程序

    C#開發(fā)簡易winform計(jì)算器程序

    這篇文章主要為大家詳細(xì)介紹了C#開發(fā)簡易winform計(jì)算器程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C# 7.2中結(jié)構(gòu)體性能問題的解決方案

    C# 7.2中結(jié)構(gòu)體性能問題的解決方案

    這篇文章主要給大家介紹了關(guān)于C# 7.2中結(jié)構(gòu)體性能問題的解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • C#非矩形窗體實(shí)現(xiàn)方法

    C#非矩形窗體實(shí)現(xiàn)方法

    這篇文章主要介紹了C#非矩形窗體實(shí)現(xiàn)方法,涉及C#窗體操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Unity 百度AI實(shí)現(xiàn)人像動(dòng)漫化效果

    Unity 百度AI實(shí)現(xiàn)人像動(dòng)漫化效果

    這篇文章主要介紹了Unity如何接入百度AI接口, 運(yùn)用對(duì)抗生成網(wǎng)絡(luò)技術(shù),為用戶量身定制千人千面的二次元?jiǎng)勇蜗?,并支持通過參數(shù)設(shè)置,生成二次元?jiǎng)勇讼?。感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • 利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度

    利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度

    本文介紹利用C#代碼實(shí)現(xiàn)圖片旋轉(zhuǎn)360度,具體實(shí)例代碼已附上,僅供大家參考,希望對(duì)大家有所幫助
    2016-11-11

最新評(píng)論

称多县| 东山县| 宜川县| 县级市| 海口市| 波密县| 调兵山市| 招远市| 上林县| 陆河县| 台北县| 合阳县| 柳江县| 怀安县| 渭南市| 永春县| 抚宁县| 榆中县| 巩义市| 方山县| 新巴尔虎右旗| 民勤县| 岫岩| 临邑县| 迁安市| 石家庄市| 翁源县| 门源| 太湖县| 连江县| 维西| 新营市| 岗巴县| 买车| 安远县| 南充市| 漳浦县| 特克斯县| 吉安市| 历史| 大城县|